package interfaz;

import clases.*;
import clases.ClsException;
import clases.ClsMetodos;
import clases.NivelesTable;
import java.awt.event.KeyEvent;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.tree.*;

/**
 *
 * @author Angel
 */
public class dlg_presupuesto_prototipo extends javax.swing.JDialog {

    private ClsMetodos metodos = new ClsMetodos();
    private ClsDatabase bd = new ClsDatabase();
    ClsRenderTabla renderprespuesto = new ClsRenderTabla();
    ClsContraladorEventos controlEvent = new ClsContraladorEventos();
    private NivelesTable nivelesTable;
    DefaultComboBoxModel modelGrupoCombo = new DefaultComboBoxModel();
    //cantidad_niveles, permite controlar los niveles en total que tiene que soportar
    //la Tabla tblPresupuesto
    public int cantidad_niveles = 3;
    public String codigo_proyecto = "1";
    String id_partida_editar = "";
    String nombre_proyecto = "Ampliación de sistema de agua potable de Paltay";
    int numeroEspacios = 3;
    int cantidadEspacios = 0;
    public String idpresupuesto = "";
    public String itemPresupuesto = "";
    String array_arbol[][] = new String[100][3];
    ClsCalculos cal = new ClsCalculos(this);
    double total_proyecto = 0.0;
    double total_prespuesto = 0.0;
    double total_temp = 0.0;
    //Para controlar por TECLAS
    private boolean sePresiono_CTRL = false;
    frm_procesando dialog = new frm_procesando(this, true);
    Thread hilo;
    boolean hilo_activa = false;
    int a1 = 1;

    /**
     * Creates new form dlg_presupuesto_prototipo
     *
     * @param parent
     * @param modal
     */
    public dlg_presupuesto_prototipo(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        inicio();
    }

    public dlg_presupuesto_prototipo(java.awt.Frame parent, boolean modal, String id_proyect, String nombre_proyect) {
        super(parent, modal);
        initComponents();
        codigo_proyecto = id_proyect;
        nombre_proyecto = nombre_proyect;
        inicio();
    }

    public void redondeando_tabla() {
        DefaultTableModel mdt = (DefaultTableModel) tablaAcu.getModel();
        int n = mdt.getRowCount();
        String num;
        for (int i = 0; i < n; i++) {
            num = metodos.redondeo_2(mdt.getValueAt(i, 13));
            mdt.setValueAt(num, i, 7);
            num = metodos.redondeo_2(mdt.getValueAt(i, 12));
            mdt.setValueAt(num, i, 6);
            num = metodos.redondeo_2(mdt.getValueAt(i, 11));
            mdt.setValueAt(num, i, 5);
            num = metodos.redondeo_2(mdt.getValueAt(i, 3).toString().replace(",", ""));
            mdt.setValueAt(num, i, 3);
        }
    }

    public void cargar_grupos_titulos() {
        metodos.comboboxLlenarMas(cboGrupo, modelGrupoCombo, "SELECT idcapitulo_base_grupo , nombre FROM capitulo_base_grupo ");
    }

    public void inicio() {
        setLocation(5, 76);
        metodos._iconJDialog(this);
        iconos_arbol();
        tblpresu.setDefaultRenderer(Object.class, new ClsFormatoSubPresupuesto());
        tblPresupuesto.setDefaultRenderer(Object.class, renderprespuesto);
        metodos.tablaLongitudColumnas(tablaAcu, new int[]{45, 20, 250, 50, 40, 60, 60, 60, 30, 0, 0, 0, 0, 0});
        metodos.tablaLongitudColumnas(tblPresupuesto, new int[]{0, 60, 250, 25, 50, 80, 80, 0, 0, 0, 0, 0, 0});
        metodos.tablaLongitudColumnas(tblpresu, new int[]{0, 0, 20, 360, 80});
        alinear_tabla();
        cargarTable_PartidasBase("", "");
        cargarTable_Presupuesto_base();
        tablaAcu.setDefaultRenderer(Object.class, new renderIcono());
        ocultar_columnas();
        cargando_proyecto();
        arbol_llenado();
        //evento();
//        bloquendo_celdas();

        nivelesTable = new NivelesTable(codigo_proyecto, tblPresupuesto, tblPartidasBase, tblCapituloBase, this);
        tblPresupuesto.getColumnModel().getColumn(4).setCellEditor(new clases.ClsCellEditorPresupuesto(bd, "metrado", this));

        //Obtenemos la cantidad de niveles definida por el usuario
        obtener_cantidadNiveles_BD();
        jLabel2.setVisible(false);
        jLabel14.setVisible(false);
        lbl_icon_error.setVisible(false);
        limpiar_etiquetas_acu();
        a1 = 1;
        cargar_grupos_titulos();
        cargarTable_CapitulosBase("");
        a1 = 2;
        editar_pie();
//        UIManager.getLookAndFeelDefaults().put("Panel.background", new Color(255,0,0));

//        UIDefaults nimbusOverrides = new UIDefaults();
//        nimbusOverrides.put("Panel.background", Color.blue);
//        jPanel4.putClientProperty("Nimbus.Overrides", nimbusOverrides);
//        SwingUtilities.updateComponentTreeUI(jPanel4);
//        UIManager.getLookAndFeelDefaults().put("Panel.background", Color.RED);

    }

    public void iconos_arbol() {
        DefaultTreeCellRenderer render = (DefaultTreeCellRenderer) jTree1.getCellRenderer();
        render.setLeafIcon(new ImageIcon(getClass().getResource("/resource/icon/principales/peque/tre_folder.png")));
        render.setOpenIcon(new ImageIcon(getClass().getResource("/resource/icon/principales/peque/tre_folder.png")));
        render.setClosedIcon(new ImageIcon(getClass().getResource("/resource/icon/principales/peque/tre_folder.png")));
    }

    public void arbol_llenado() {
        metodos.arbol_llenar(jTree1, "idnivel, nombre, nivel FROM partida_nivel", "WHERE estado='A' order by idnivel asc ;", array_arbol);
    }

    public void actualizar_partida() {
        int fila = tblPresupuesto.getSelectedRow();
        String tipo = tblPresupuesto.getValueAt(fila, 9).toString();

        if (tipo.equals("0")) {
            String partida = tblPresupuesto.getValueAt(fila, 0).toString();
            String metrado = tblPresupuesto.getValueAt(fila, 4).toString();
            String parcial = tblPresupuesto.getValueAt(fila, 6).toString().replace(",", "");
            bd.update("presupuesto_partida", " metrado='" + metrado + "', precio_parcial='" + parcial + "' ", "idproyecto='" + codigo_proyecto + "' and idpresupuesto='" + idpresupuesto + "' and idpartida='" + partida + "' ");
        }

    }

    public String check(JCheckBox chk, String val1, String val2) {
        String v = val2;
        if (chk.isSelected()) {
            v = val1;
        }
        return v;
    }

    public void alinear_tabla() {
        //izquierda
        DefaultTableCellRenderer modelocentrar = new DefaultTableCellRenderer();
        modelocentrar.setHorizontalAlignment(SwingConstants.RIGHT);
        tblPresupuesto.getColumnModel().getColumn(4).setCellRenderer(modelocentrar);
        tblPresupuesto.getColumnModel().getColumn(5).setCellRenderer(modelocentrar);
//        tblPresupuesto.getColumnModel().getColumn(6).setCellRenderer(modelocentrar);


        modelocentrar.setHorizontalAlignment(SwingConstants.RIGHT);
        tablaAcu.getColumnModel().getColumn(7).setCellRenderer(modelocentrar);
        tablaAcu.getColumnModel().getColumn(6).setCellRenderer(modelocentrar);
        tablaAcu.getColumnModel().getColumn(5).setCellRenderer(modelocentrar);
        tablaAcu.getColumnModel().getColumn(3).setCellRenderer(modelocentrar);

        //centrar
        DefaultTableCellRenderer modelocentrar2 = new DefaultTableCellRenderer();
        modelocentrar2.setHorizontalAlignment(SwingConstants.CENTER);
        tablaAcu.getColumnModel().getColumn(4).setCellRenderer(modelocentrar2);

    }

    public void ocultar_columnas() {
        metodos.tablaOcultarcolumnas(tblPartidasBase, new int[]{0, 3, 4, 5});
//        metodos.tablaOcultarcolumnas(tblPresupuesto, new int[]{0, 10, 11, 12});
        metodos.tablaOcultarcolumnas(tblPresupuesto, new int[]{0, 7, 8, 9, 10, 11, 12});
//        metodos.tablaOcultarcolumnas(tblPresupuesto, new int[]{0, 7, 8, 9, 10, 11});
        metodos.tablaOcultarcolumnas(tblpresu, new int[]{0, 1});
        metodos.tablaOcultarcolumnas(tablaAcu, new int[]{0, 8, 9, 10, 11, 12, 13});
        metodos.tablaOcultarcolumnas(tblCapituloBase, new int[]{0});

    }

    public void cargando_proyecto() {
//        codigo_proyecto = "1";
//        nombre_proyecto = "Ampliación de sistema de agua potable de Paltay";
        setTitle("Presupuesto: " + nombre_proyecto);
//        jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("Presupuesto: " + nombre_proyecto));kjkjk
        //txtNombreProyecto.setText(nombre_proyecto);
        llenar_gastos_generales();
        gastos_prespuesto_total(1, true);
    }

    public void bloquendo_celdas() {
        //DefaultTableModel dtmEjemplo = new DefaultTableModel(getFilas(), getColumnas());
        DefaultTableModel mdt = (DefaultTableModel) tblPresupuesto.getModel();
        tblPresupuesto = new JTable(mdt) {
            public boolean isCellEditable(int rowIndex, int ColIndex) {
                boolean v = false;
                if (ColIndex == 4 && rowIndex == 0) {
                    v = false;
                } else {
                    v = false;
                }
                return false;
            }
        }; //return false: Desabilitar edición de celdas.
    }

    public void limpiar_unidad() {
        DefaultTableModel mdt = (DefaultTableModel) tblPresupuesto.getModel();
        int n = mdt.getRowCount();
        for (int i = 0; i < n; i++) {
            if (tblPresupuesto.getValueAt(i, 9).toString().equals("1")) {
                tblPresupuesto.setValueAt("", i, 3);
            }
        }
    }
//___________________________________________________________________________________ Soy una barra separadora :)

    public final void cargarTable_Presupuesto_base() {
        metodos.tablaLlenaSql_defecto(tblpresu,
                "  idpresupuesto,idproyecto,orden, descripcion,estado_nombre",
                " idproyecto, idpresupuesto, descripcion FROM presupuesto where idproyecto= '" + codigo_proyecto + "'"
                + "ORDER BY orden asc");
    }

    public final void cargarTable_PartidasBase(String nombre_busca_partida, String nivel) {
//        SELECT pb.*,u.idunidad,u.simbolo
//        FROM partida_base pb,unidad u
//        WHERE pb.idunidad=u.idunidad;
        metodos.tablaLlenaSql(tblPartidasBase,
                "pb.idpartida,pb.nombre,u.simbolo,pb.rendimiento, pb.precio, pb.idunidad",
                "FROM partida_base pb,unidad u where pb.idunidad=u.idunidad and pb.nombre like '%" + nombre_busca_partida + "%'  and idnivel like '" + nivel + "%' "
                + "ORDER BY pb.idpartida");
    }

    public final void cargarTable_CapitulosBase(String busca_capitulo) {
        String val_grupo = modelGrupoCombo.getElementAt(cboGrupo.getSelectedIndex()).toString();
        metodos.tablaLlenaSql(tblCapituloBase,
                " idcapitulo_base,nombre ",
                "FROM capitulo_base where nombre like '%" + busca_capitulo + "%' and  idcapitulo_base_grupo  like '%" + val_grupo + "%' "
                + "ORDER BY nombre");
    }

    public final void cargarTable_Presupuesto(int opcion) {
        DefaultTableModel mdt = (DefaultTableModel) tblPresupuesto.getModel();
        metodos.tablaLimpia(mdt);
        if (opcion == 1) {
            int fila = tblpresu.getSelectedRow();

            metodos.tablaLlenaSql_defecto(tblPresupuesto,
                    "  p.idpartida,concat('" + tblpresu.getValueAt(fila, 2) + ".',p.item), p.nombre,u.simbolo, p.metrado, p.precio_unitario, p.precio_parcial, p.padre, p.nivel, p.tipo, p.rendimiento,p.idunidad,p.orden ",
                    " FROM presupuesto_partida p,unidad u   where p.idunidad=u.idunidad and p.idproyecto='" + codigo_proyecto + "'  and p.idpresupuesto='" + idpresupuesto + "'  "
                    + "ORDER BY p.item asc");


        } else {
            int n = tblpresu.getRowCount();
            String orden = "";
            for (int i = 0; i < n; i++) {

                orden = tblpresu.getValueAt(i, 2).toString();
                Object[] mat = {"0", orden, tblpresu.getValueAt(i, 3), "", "", "", "", "", "", "1", "", "1", "0"};
                if (mat != null) {
                    mdt.addRow(mat);
                    tablaLlenaSql(tblPresupuesto,
                            "  p.idpartida,concat('" + orden + "','.',p.item), p.nombre,u.simbolo, p.metrado, p.precio_unitario, p.precio_parcial, p.padre, p.nivel, p.tipo, p.rendimiento,p.idunidad,p.orden ",
                            " FROM presupuesto_partida p,unidad u   where p.idunidad=u.idunidad and p.idproyecto='" + codigo_proyecto + "'  and p.idpresupuesto='" + tblpresu.getValueAt(i, 0) + "'  "
                            + "ORDER BY p.item asc");
                }

            }

        }
        metodos.tablaRedondea(tblPresupuesto, new int[]{4, 6});
        tablaRedondea_3digitos(tblPresupuesto, new int[]{5});
        limpiar_unidad();
    }

    public void tablaRedondea_3digitos(javax.swing.JTable tbl, int columna[]) {
        DefaultTableModel mdt = (DefaultTableModel) tbl.getModel();
        int n = mdt.getRowCount();
        String num;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < columna.length; j++) {
                Object valor = mdt.getValueAt(i, columna[j]);
                if (valor != null) {
                    num = metodos.redondeo_3(valor, 3, false);
                    mdt.setValueAt(num, i, columna[j]);
                } else {
                    mdt.setValueAt("", i, columna[j]);
                }

            }

        }
    }

    public void cargarTablaACU(String nombre) {
        //pd.cuadrilla
        metodos.tablaLlenaSql_defecto(tablaAcu,
                " pd.idinsumo,i.idinsumo_tipo,i.nombre,pd.cuadrilla,u.simbolo,pd.cantidad,pd.precio_unitario,pd.precio_parcial,'Quitar',i.idinsumo_tipo,i.subcatergoria,pd.cantidad,pd.precio_unitario,pd.precio_parcial",
                "FROM partida_base_detalle pd, insumo i,insumo_tipo t,unidad u "
                + " where pd.idinsumo=i.idinsumo and  t.idinsumo_tipo=i.idinsumo_tipo and u.idunidad=i.idunidad and pd.idpartida='" + nombre + "' "
                + "ORDER BY t.idinsumo_tipo asc, i.idinsumo asc ");
//        total_filas = tablaAcu.getRowCount();
        iconos_tipo_insumo(tablaAcu, 9);
        tabla_cuadrilla_actualiza();

    }

    public void tabla_cuadrilla_actualiza() {
        DefaultTableModel mdt = (DefaultTableModel) tablaAcu.getModel();
        int n = mdt.getRowCount();
        String tipo = "", sub_categoria = "";
        for (int i = 0; i < n; i++) {
            tipo = mdt.getValueAt(i, 9).toString();
            sub_categoria = mdt.getValueAt(i, 10).toString();
            if (tipo.equals("2") || (tipo.equals("3") && sub_categoria.equals("2"))) {
                //
            } else {
                mdt.setValueAt("", i, 3);
            }
        }
    }

    public void iconos_tipo_insumo(javax.swing.JTable tabla, int col_tipo) {
        ImageIcon icon1 = new ImageIcon(getClass().getResource("/resource/icon/principales/peque/ico_material_16.png"));
        ImageIcon icon2 = new ImageIcon(getClass().getResource("/resource/icon/principales/peque/ico_obrero.png"));
        ImageIcon icon3 = new ImageIcon(getClass().getResource("/resource/icon/principales/peque/ico_herramienta_12.png"));
        ImageIcon icon4 = new ImageIcon(getClass().getResource("/resource/icon/principales/peque/ico_servicios.png"));
        int n = tabla.getRowCount();
        for (int i = 0; i < n; i++) {
            String valor = tabla.getValueAt(i, col_tipo).toString();
            if (valor.equals("1")) {
                tabla.setValueAt(new JLabel(icon1), i, 1);
            } else if (valor.equals("2")) {
                tabla.setValueAt(new JLabel(icon2), i, 1);
            } else if (valor.equals("3")) {
                tabla.setValueAt(new JLabel(icon3), i, 1);
            } else if (valor.equals("4")) {
                tabla.setValueAt(new JLabel(icon4), i, 1);
            } else {
                tabla.setValueAt(new JLabel(icon3), i, 1);
            }
        }
    }

    public boolean tablaLlenaSql(javax.swing.JTable table, String camposSelect, String sqlFromWhere) {
        DefaultTableModel mdt = (DefaultTableModel) table.getModel();
        //metodos.tablaLimpia(mdt);
        boolean va = true;
        String sql = "SELECT " + camposSelect + " " + sqlFromWhere;
        //System.out.println("tablaLlenaSql--> " + sql);
        int n = 0;
        try {
            bd.getConnection();
            PreparedStatement pstm = bd.conn.prepareStatement(sql);
            ResultSet res = pstm.executeQuery();

            //Previene que en camposSelect tenga: * o concat(   -->para obtener el numero de columnas
            ResultSetMetaData rsmd = res.getMetaData();
            n = rsmd.getColumnCount();
//            System.err.println("n-Result-getColumnCount: "+String.valueOf(n));

            while (res.next()) {
                Object mat[] = new Object[n];
                for (int i = 0; i < n; i++) {
                    mat[i] = res.getString(i + 1);
                }
                mat[6] = metodos.redondeo_2(mat[6]);
                mdt.addRow(mat);
            }
            res.close();
        } catch (Exception e) {
            System.err.println("sql: " + e);
            e.printStackTrace();
            ClsException._exceptionWriteFile(e, "tablaLlenaSql");
        }
        //metodos.clsTabla.packColumns(table, 2);
        return va;
    }

    public void sumar_totales() {
        DefaultTableModel modeloTabla = (DefaultTableModel) tblPresupuesto.getModel();
        //int fileSelect = tblPresupuesto.getSelectedRow();
        double total = 0.0;
        total_prespuesto = 0;
        String codigo = "";
        for (int i = 0; i < modeloTabla.getRowCount(); i++) {
            if (modeloTabla.getValueAt(i, 9).toString().equals("1")) {
                codigo = modeloTabla.getValueAt(i, 1).toString();
                //sumando
                total = suma_parcial(modeloTabla, codigo);
                //fin sumando
                modeloTabla.setValueAt(metodos.redondeo_2(total), i, 6);

            } else {
                total_prespuesto = total_prespuesto + (Double.parseDouble(modeloTabla.getValueAt(i, 4).toString().replace(",", "")) * Double.parseDouble(modeloTabla.getValueAt(i, 5).toString().replace(",", "")));
            }
        }
        bd.update("presupuesto", "total_presupuesto='" + total_prespuesto + "'", "idproyecto='" + codigo_proyecto + "' and idpresupuesto='" + idpresupuesto + "'");
    }

    public double suma_parcial(DefaultTableModel modeloTabla, String codigo) {
        String codigo_temp = "";
        double total = 0.0;
        for (int j = 0; j < modeloTabla.getRowCount(); j++) {
//            System.out.println("j:" + j + "  modeloTabla.getValueAt(j, 1).toString():" + modeloTabla.getValueAt(j, 1).toString());
            codigo_temp = modeloTabla.getValueAt(j, 1).toString();
            if (codigo.length() <= codigo_temp.length()) {
                codigo_temp = codigo_temp.substring(0, codigo.length());
                if (codigo_temp.equals(codigo) && modeloTabla.getValueAt(j, 9).toString().equals("0")) {
                    total = total + (Double.parseDouble(modeloTabla.getValueAt(j, 4).toString().replace(",", "")) * Double.parseDouble(modeloTabla.getValueAt(j, 5).toString().replace(",", "")));
//                    System.out.println("j-fila:" + j + "  total:" + total);
                }
            }
        }
        return total;
    }

    public void sumar_totales_todos() {
        String sql = "";
        sql = "SELECT orden,item,tipo,metrado,precio_unitario, precio_parcial, total_mat, total_mo, total_eyh, total_serv FROM presupuesto_partida where idproyecto='" + codigo_proyecto + "' and idpresupuesto='" + idpresupuesto + "';";
        Object data[][] = metodos.cargar_matriz(sql);
        int n = data.length;

        //int fileSelect = tblPresupuesto.getSelectedRow();

        //total_prespuesto = 0;
        double total_sub = 0, mat = 0, mo = 0, eyh = 0, ser = 0;
        String codigo = "";
        for (int i = 0; i < n; i++) {
            if (data[i][2].toString().equals("1")) {
                codigo = data[i][1].toString();
                //sumando
                sumar_totales_todos_parcial(data, codigo, n, i);

            } else {
                //por prespuesto
                total_sub = total_sub + (Double.parseDouble(data[i][3].toString()) * Double.parseDouble(data[i][4].toString()));
                mat = mat + Double.parseDouble(data[i][6].toString());
                mo = mo + Double.parseDouble(data[i][7].toString());
                eyh = eyh + Double.parseDouble(data[i][8].toString());
                ser = ser + Double.parseDouble(data[i][9].toString());
            }
        }
        bd.update("presupuesto", "total_presupuesto='" + total_sub + "',total_mat='" + mat + "', total_mo='" + mo + "', total_eyh='" + eyh + "', total_serv='" + ser + "'", "idproyecto='" + codigo_proyecto + "' and idpresupuesto='" + idpresupuesto + "'");
    }

    public void sumar_totales_todos_parcial(Object data[][], String codigo, int n, int i) {
        String codigo_temp = "";
        double total = 0.0, mat = 0, mo = 0, eyh = 0, ser = 0;

        for (int j = 0; j < n; j++) {
//            System.out.println("j:" + j + "  modeloTabla.getValueAt(j, 1).toString():" + modeloTabla.getValueAt(j, 1).toString());
            codigo_temp = data[j][1].toString();
            if (codigo.length() <= codigo_temp.length()) {
                codigo_temp = codigo_temp.substring(0, codigo.length());
                if (codigo_temp.equals(codigo) && data[j][2].toString().equals("0")) {
                    total = total + (Double.parseDouble(data[j][3].toString()) * Double.parseDouble(data[j][4].toString()));
                    // System.out.println(" sersere" + mat + "   --   " + data[j][6].toString() + " ------" + data[j][1].toString());
                    mat = mat + Double.parseDouble(data[j][6].toString());
                    mo = mo + Double.parseDouble(data[j][7].toString());
                    eyh = eyh + Double.parseDouble(data[j][8].toString());
                    ser = ser + Double.parseDouble(data[j][9].toString());
                }
            }
        }
        data[i][5] = total;
        data[i][6] = mat;
        data[i][7] = mo;
        data[i][8] = eyh;
        data[i][9] = ser;
        bd.update("presupuesto_partida", "precio_parcial='" + total + "',total_mat='" + mat + "', total_mo='" + mo + "', total_eyh='" + eyh + "', total_serv='" + ser + "'", "idproyecto='" + codigo_proyecto + "' and idpresupuesto='" + idpresupuesto + "'  and orden='" + data[i][0] + "' ");

    }

    public void evento() {
        tblPresupuesto.getModel().addTableModelListener(new TableModelListener() {
            @Override
            public void tableChanged(final TableModelEvent e) {
                DefaultTableModel mdt = (DefaultTableModel) e.getSource();
                int fila = e.getFirstRow();
                int columna = e.getColumn();
                //System.err.println("TABLECHANGED(): Fila=" + fila + " columna=" + columna + " editando=" );//+ editando
                if ((fila > -1) && (columna > -1)) {
                    if (fila != -1 && columna == 4) {// && editando
                        if (mdt.getValueAt(fila, 9).toString().equals("0")) {

                            //cantidad
//                        String valor=tablaAcu.getValueAt(fila, 4).toString();
                            String valor = mdt.getValueAt(fila, 4).toString();
                            String codigo_presupuesto_partida = mdt.getValueAt(fila, 1).toString();
                            System.err.println("vvalor=" + valor);
//                            if (esmunmero(valor)) {
////                            editando=false;
//                                //System.out.println("Es un numero");
//                                double cantida = Double.parseDouble(mdt.getValueAt(fila, 4).toString());
//                                double precio = Double.parseDouble(mdt.getValueAt(fila, 5).toString());
//
//                                double total = cantida * precio;
////                            mdt.setValueAt("2", fila, 6);
//
//                                sumar_totales();
//                                bd.update("presupuesto_partida", " metrado='" + cantida + "', precio_parcial='" + total + "' ", "idproyecto='" + codigo_proyecto + "' and idpresupuesto='" + idpresupuesto + "' and idpartida='" + codigo_presupuesto_partida + "' ");
//                                mdt.setValueAt(metodos.redondeo_2(total), fila, 6);
//                            } else {
//                                bd.update("presupuesto_partida", " metrado='" + "0" + "', precio_parcial='" + "0" + "' ", "idproyecto='" + codigo_proyecto + "' and idpresupuesto='" + idpresupuesto + "' and idpartida='" + codigo_presupuesto_partida + "' ");
//                                JOptionPane.showMessageDialog(tblPresupuesto, "no es numero");
//                                mdt.setValueAt(0, fila, 4);
//                                mdt.setValueAt(0, fila, 6);
//                            }
                        } else {
                            JOptionPane.showMessageDialog(tblPresupuesto, "No se ingresa metrados");
                            mdt.setValueAt("-", fila, 4);
                        }
                    }
                }
            }
        });
    }

    public void actualizar(String idprespuesto_partida) {
        bd.update("presupuesto_partida", " metrado='" + codigo_proyecto + "', precio_parcial='" + codigo_proyecto + "' ", "idproyecto='" + codigo_proyecto + "' and idpresupuesto='" + idpresupuesto + "' and idpartida='" + idprespuesto_partida + "' ");
    }
//___________________________________________________________________________________ Soy una barra separadora :)

    public void ver_acu(int opcion) {
        int fila = 0;
        String codigo = "";
        if (opcion == 1) {
            fila = tblPartidasBase.getSelectedRow();
            codigo = tblPartidasBase.getValueAt(fila, 0).toString();

        } else {
            fila = tblPresupuesto.getSelectedRow();
            if (fila != -1) {
                codigo = tblPresupuesto.getValueAt(fila, 0).toString();
            }
        }
        if (fila != -1) {
            Object[][] datos = bd.select("partida_base p, unidad u", "p.idpartida,p.nombre, p.rendimiento,u.simbolo, p.precio", " p.idunidad=u.idunidad and idpartida='" + codigo + "' ");
            limpiar_etiquetas_acu();
            if (datos != null) {
                jLabel16.setVisible(true);
                jLabel17.setVisible(true);
                id_partida_editar = datos[0][0].toString();
                jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("ACU:  " + datos[0][1].toString()));

                jLabel18.setText(metodos.redondeo_2(datos[0][2].toString()) + " " + datos[0][3].toString() + " / día");
                jLabel15.setText(metodos.redondeo_2(datos[0][4].toString()));
            } else {
                jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("ACU"));
            }


            cargarTablaACU(codigo);
            redondeando_tabla();
        }
    }

    public void limpiar_etiquetas_acu() {
        // jLabel14.setText("");

        jLabel18.setText("");
        jLabel15.setText("");
        jLabel16.setVisible(false);
        jLabel17.setVisible(false);
    }

    public void gastos_calcular() {
        if (jTextField10.getText().trim().length() != 0 && txtPorcentaje_gg.getText().trim().length() != 0) {
//            double costo_directo = Double.parseDouble(jTextField10.getText());
            double costo_directo = total_temp;
            //System.out.println(costo_directo);
            double porcentaje_gastogeneral = Double.parseDouble(txtPorcentaje_gg.getText());
            double monto_gg = 0;
            if (costo_directo > 0) {
                monto_gg = (porcentaje_gastogeneral * costo_directo) / 100;
            }
            txt_monto_gg.setText(metodos.redondeo_1(monto_gg));
            //utilidad
            double utilidad = 0;
            double porcentaje_utilidad = 0;

            if (jCheckBox2.isSelected()) {
                if (txtUtilidad.getText().trim().length() != 0) {
                    if (jCheckBox3.isSelected()) {
                        txtUtilidad.setEnabled(true);
                    }

                    porcentaje_utilidad = Double.parseDouble(txtUtilidad.getText());
                    utilidad = (porcentaje_utilidad / 100) * costo_directo;
                    jTextField12.setText(metodos.redondeo_1(utilidad));
                } else {
                    jTextField12.setText("0");
                }
            } else {
                txtUtilidad.setEnabled(false);
                jTextField12.setEnabled(false);
                txtUtilidad.setText("0");
                jTextField12.setText("0");
            }
            double sub_total = costo_directo + monto_gg + utilidad;
            jTextField13.setText(metodos.redondeo_1(sub_total));
            //IGV
            double igv_monto = 0;
            double porcentaje_igv = 0;
            if (jCheckBox1.isSelected()) {
                if (txtIgv.getText().trim().length() != 0) {
                    if (jCheckBox3.isSelected()) {
                        txtIgv.setEnabled(true);
                    }

                    porcentaje_igv = Double.parseDouble(txtIgv.getText());
                    igv_monto = (porcentaje_igv / 100) * sub_total;
                    jTextField14.setText(metodos.redondeo_1(igv_monto));
                } else {
                    jTextField14.setText("0");
                }
            } else {
                txtIgv.setEnabled(false);
                txtIgv.setText("0");
                jTextField14.setText("0");
            }
            //total presupuesto 
            double total_presupuesto = sub_total + igv_monto;
            jTextField15.setText(metodos.redondeo_1(total_presupuesto));
            bd.update("proyecto ", "porcentaje_gg='" + Double.parseDouble(txtPorcentaje_gg.getText().replace(",", "")) + "',porcentaje_uti='" + porcentaje_utilidad + "',igv='" + porcentaje_igv + "',utilidad_ver='" + check(jCheckBox2, "1", "0") + "',igv_ver='" + check(jCheckBox1, "1", "0") + "'", " idproyecto='" + codigo_proyecto + "' ");
        }
    }

    public void gastos_prespuesto_total(int opcion, boolean imprime) {
        double total = 0;
        try {
            bd.getConnection();
            String sql = "";
            PreparedStatement pstm = null;
            if (opcion == 1) {
//sql = "SELECT sum(total_presupuesto) FROM presupuesto where idproyecto='" + codigo_proyecto + "' and idpresupuesto='" + idpresupuesto + "'";
                sql = "SELECT sum(total_presupuesto) FROM presupuesto where idproyecto='" + codigo_proyecto + "' ";
                pstm = bd.conn.prepareStatement(sql);
                ResultSet res = pstm.executeQuery();
                while (res.next()) {
                    total = res.getDouble(1);

                }
                sql = "update proyecto set total_proyecto='" + total + "' where idproyecto='" + codigo_proyecto + "'  ";
                pstm = bd.conn.prepareStatement(sql);
                pstm.execute();
                total_proyecto = total;
            } else if (opcion == 2) {
                sql = "SELECT total_presupuesto FROM presupuesto where idproyecto='" + codigo_proyecto + "'  and idpresupuesto='" + idpresupuesto + "'";
                System.out.println("nuevos-- " + sql);
                pstm = bd.conn.prepareStatement(sql);
                ResultSet res = pstm.executeQuery();
                while (res.next()) {
                    total = res.getDouble(1);
                }
                total_prespuesto = total;
            }

        } catch (Exception e) {
            System.err.println(e);
            e.printStackTrace();
            ClsException._exceptionWriteFile(e, "insertando partidas");
        }
        //System.out.println("total-- " + total);
        if (imprime) {
            total_temp = total;
            jTextField10.setText(metodos.redondeo_1(total));
            gastos_calcular();
        }


    }
//___________________________________________________________________________________ Soy una barra separadora :)

    public void grabar_presupuesto(int opcion) {
        String sql = "", item, nombre, metrado, precio_unitario, precio_total, padre, nivel, tipo, unidad, rendimiento, partida;
        int fila_presupuesto_total = tblPresupuesto.getRowCount();

        if (opcion == 1) {
            try {
                bd.getConnection();
                PreparedStatement pstm = null;
                String orden_string = "";
//                sql = "delete from presupuesto_partida where idproyecto='" + codigo_proyecto + "' and idpresupuesto='" + idpresupuesto + "'";
//                pstm = bd.conn.prepareStatement(sql);
//                pstm.execute();
                sumar_totales();


                int i = tblPresupuesto.getSelectedRow();
//                    System.err.println("opcion 3");
                partida = tblPresupuesto.getValueAt(i, 0).toString();
                tipo = tblPresupuesto.getValueAt(i, 9).toString();
                item = tblPresupuesto.getValueAt(i, 1).toString();
                item = item.substring(3, item.length());
                nombre = tblPresupuesto.getValueAt(i, 2).toString().replace("'", "");

                if (tipo.equals("0")) {
                    metrado = "'" + tblPresupuesto.getValueAt(i, 4).toString() + "'";
                    precio_unitario = "'" + tblPresupuesto.getValueAt(i, 5).toString() + "'";
                    precio_total = "'" + (Double.parseDouble(tblPresupuesto.getValueAt(i, 4).toString()) * Double.parseDouble(tblPresupuesto.getValueAt(i, 5).toString())) + "'";
                    rendimiento = "'" + tblPresupuesto.getValueAt(i, 10).toString() + "'";
                } else {
                    metrado = "null";
                    precio_unitario = "null";
                    precio_total = "'" + tblPresupuesto.getValueAt(i, 6).toString().replace(",", "") + "'";
                    rendimiento = "null";
                }
                //System.err.println("opcion 4");
                padre = tblPresupuesto.getValueAt(i, 7).toString();
                nivel = tblPresupuesto.getValueAt(i, 8).toString();
                unidad = tblPresupuesto.getValueAt(i, 11).toString();
                orden_string = tblPresupuesto.getValueAt(i, 12).toString();
                sql = "insert into presupuesto_partida (idproyecto, idpresupuesto,idpartida,orden,item, nombre, metrado, precio_unitario, precio_parcial, padre, nivel, fechacreacion, tipo, rendimiento, idunidad, idpartida_generica,estado) values("
                        + "'" + codigo_proyecto + "','" + idpresupuesto + "','" + partida + "','" + orden_string + "','" + item + "','" + nombre + "'," + metrado + "," + precio_unitario + "," + precio_total + ",'" + padre + "','" + nivel + "',sysdate(),'" + tipo + "'," + rendimiento + ",'" + unidad + "','" + "1" + "','A')";
                //System.err.println(sql);
                pstm = bd.conn.prepareStatement(sql);
                pstm.execute();

                pstm.close();
            } catch (Exception e) {
                System.err.println(e);
                e.printStackTrace();
                ClsException._exceptionWriteFile(e, "insertando partidas");
            }

        } else if (opcion == 2) {

            try {
                bd.getConnection();
                PreparedStatement pstm = null;
                int orden = 0;
                sql = "delete from presupuesto_partida where idproyecto='" + codigo_proyecto + "' and idpresupuesto='" + idpresupuesto + "'";
                pstm = bd.conn.prepareStatement(sql);
                pstm.execute();
                sumar_totales();
//                calcular_total_proyecto();
//                calcular_gastos();

                for (int i = 0; i < fila_presupuesto_total; i++) {
//                    System.err.println("opcion 3");
                    partida = tblPresupuesto.getValueAt(i, 0).toString();
                    tipo = tblPresupuesto.getValueAt(i, 9).toString();
                    item = tblPresupuesto.getValueAt(i, 1).toString();
                    item = item.substring(3, item.length());
                    nombre = tblPresupuesto.getValueAt(i, 2).toString().replace("'", "");

                    if (tipo.equals("0")) {
                        metrado = "'" + tblPresupuesto.getValueAt(i, 4).toString() + "'";
                        precio_unitario = "'" + tblPresupuesto.getValueAt(i, 5).toString() + "'";
                        precio_total = "'" + (Double.parseDouble(tblPresupuesto.getValueAt(i, 4).toString()) * Double.parseDouble(tblPresupuesto.getValueAt(i, 5).toString())) + "'";
                        rendimiento = "'" + tblPresupuesto.getValueAt(i, 10).toString() + "'";
                    } else {
                        metrado = "null";
                        precio_unitario = "null";
                        precio_total = "'" + tblPresupuesto.getValueAt(i, 6).toString().replace(",", "") + "'";
                        rendimiento = "null";
                    }
                    //System.err.println("opcion 4");
                    padre = tblPresupuesto.getValueAt(i, 7).toString();
                    nivel = tblPresupuesto.getValueAt(i, 8).toString();
                    unidad = tblPresupuesto.getValueAt(i, 11).toString();
                    orden = orden + 1;
                    sql = "insert into presupuesto_partida (idproyecto, idpresupuesto,idpartida,orden,item, nombre, metrado, precio_unitario, precio_parcial, padre, nivel, fechacreacion, tipo, rendimiento, idunidad, idpartida_generica,estado) values("
                            + "'" + codigo_proyecto + "','" + idpresupuesto + "','" + partida + "','" + orden + "','" + item + "','" + nombre + "'," + metrado + "," + precio_unitario + "," + precio_total + ",'" + padre + "','" + nivel + "',sysdate(),'" + tipo + "'," + rendimiento + ",'" + unidad + "','" + "1" + "','A')";
                    //System.err.println(sql);
                    pstm = bd.conn.prepareStatement(sql);
                    pstm.execute();
                }
                pstm.close();
            } catch (Exception e) {
                System.err.println(e);
                e.printStackTrace();
                ClsException._exceptionWriteFile(e, "insertando partidas");
            }
        }
    }

    public void presupuesto_dlg(int v) {
        if (v == 1) {
            dlgPresupuesto_nuevo dialog = new dlgPresupuesto_nuevo(new javax.swing.JFrame(), true, v, "", codigo_proyecto, "");
            dialog.setVisible(true);
            cargarTable_Presupuesto_base();
        } else if (v == 2) {
            int fila = tblpresu.getSelectedRow();
            if (fila != -1) {
                String idpresu = tblpresu.getValueAt(fila, 0).toString();
                String nombre_presu = tblpresu.getValueAt(fila, 3).toString();

                dlgPresupuesto_nuevo dialog = new dlgPresupuesto_nuevo(new javax.swing.JFrame(), true, v, nombre_presu, codigo_proyecto, idpresu);
                dialog.setVisible(true);
                cargarTable_Presupuesto_base();
            } else {
                javax.swing.JOptionPane.showMessageDialog(this, "Seleccione el Sub Presupuesto");
            }
        } else if (v == 3) {
            int fila = tblpresu.getSelectedRow();
            if (fila != -1) {
                if (JOptionPane.showConfirmDialog(null, "Está seguro que desea eliminar el Sub Presupuesto seleccionado", "Mensaje", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == 0) {
                    String idpresu = tblpresu.getValueAt(fila, 0).toString();
                    dlgPresupuesto_nuevo dialog = new dlgPresupuesto_nuevo(new javax.swing.JFrame(), true, v, "", codigo_proyecto, idpresu);
                    boolean eli = dialog.eliminar();
                    if (eli == true) {
                        //Actualizamos los Numeros de orden
                        DefaultTableModel modelTablePresu = (DefaultTableModel) tblpresu.getModel();
                        modelTablePresu.removeRow(fila);
                        String numberOrden = "";
                        for (int i = fila; i < modelTablePresu.getRowCount(); i++) {
                            idpresu = modelTablePresu.getValueAt(i, 0).toString();
                            int valor = i + 1;
                            if (String.valueOf(valor).length() == 1) {
                                numberOrden = "0" + valor;
                            } else {
                                numberOrden = String.valueOf(valor);
                            }
                            modelTablePresu.setValueAt(numberOrden, i, 2);
                            bd.update("presupuesto", "orden='" + numberOrden + "'", "idproyecto='" + codigo_proyecto + "' and idpresupuesto='" + idpresu + "'");
                        }
                        //limpiado los items del sub prespuesto
                        DefaultTableModel modeloTabla = (DefaultTableModel) tblPresupuesto.getModel();
                        metodos.tablaLimpia(modeloTabla);
                        idpresupuesto = "";
                    }

                }
            } else {
                javax.swing.JOptionPane.showMessageDialog(this, "Seleccione el Sub Presupuesto");
            }
        }
    }

    public void ver_presupuesto() {
        tblPresupuesto.editCellAt(-1, -1);
        if (jCheckBox3.isSelected() == false) {
            int fila = tblpresu.getSelectedRow();
            if (fila != -1) {
                idpresupuesto = tblpresu.getValueAt(fila, 0).toString();
                itemPresupuesto = tblpresu.getValueAt(fila, 2).toString();

//                System.out.println("-------------------------------------->itemPresupuesto:"+itemPresupuesto);
                String nombre = tblpresu.getValueAt(fila, 3).toString();

                jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("Sub Presupuesto: " + nombre));
                actualiza_datos_sub_prespuesto(idpresupuesto);
                cargarTable_Presupuesto(1);
                gastos_prespuesto_total(2, true);
            }
//else {
//            javax.swing.JOptionPane.showMessageDialog(this, "Seleccione el presupuesto");
//        }
        }
    }

    public String codigo_mayor() {
        int fila_presupuesto_total = tblPresupuesto.getRowCount();
        int valor = 0;
        for (int i = 0; i < fila_presupuesto_total; i++) {
            int prueba = Integer.parseInt(tblPresupuesto.getValueAt(i, 12).toString());
            if (prueba >= valor) {
                valor = prueba;
            }
        }
        valor = valor + 1;
        return "" + valor;
    }

    public void actualizar_item(int select) {
        String item = tblPresupuesto.getValueAt(select, 1).toString();
        item = item.substring(3, item.length());
        bd.update("presupuesto_partida", "item='" + item + "'", "idproyecto='" + codigo_proyecto + "' and idpresupuesto='" + idpresupuesto + "' and   orden='" + tblPresupuesto.getValueAt(select, 12) + "'  ");
    }

    public void elimina_item(int select) {
        bd.delete("presupuesto_partida", "idproyecto='" + codigo_proyecto + "' and idpresupuesto='" + idpresupuesto + "' and orden='" + tblPresupuesto.getValueAt(select, 12) + "'  ");
    }

    public void actualiza_estado_presupuesto(int opcion) {
        String estado = "";
        if (opcion == 1) {
            estado = "Sin Procesar";
            bd.update("presupuesto", " estado_nombre='" + estado + "' ", "idproyecto='" + codigo_proyecto + "'  and idpresupuesto='" + idpresupuesto + "'");
        } else {
            estado = "Procesado";
        }
        int fila = tblpresu.getSelectedRow();
        if (fila != -1) {
            tblpresu.setValueAt(estado, fila, 4);
        }
    }

    public void bloquea_boton_movimientos(boolean v) {
        //partidas
        btnDisminuirNivel.setEnabled(v);
        btnAumentarNivel.setEnabled(v);
        btnEliminar1.setEnabled(v);
    }

    public void valida_controles_movimiento() {
        if (jCheckBox3.isSelected() == false) {
            int fila = tblPresupuesto.getSelectedRow();
            if (fila != -1) {
                if (tblPresupuesto.getValueAt(fila, 9).toString().equals("0")) {
                    bloquea_boton_movimientos(false);
                } else {
                    bloquea_boton_movimientos(true);
                }
            }
        }

    }

    public void enviar_presupuesto(int accion) {
        if (idpresupuesto.length() != 0) {
            if (accion == 1) {
                // enviar partida
                int fila_seleccion = tblPartidasBase.getSelectedRow();
                int fila_seleccion_tblPresupuesto = tblPresupuesto.getSelectedRow();
                if (fila_seleccion_tblPresupuesto != -1) {
                    if (fila_seleccion != -1) {
                        //Verificamos que no se repita la partida a ingresar...
                        //                    JOptionPane.showMessageDialog(null, "*111");
                        String idPartida = tblPartidasBase.getValueAt(fila_seleccion, 0).toString();
                        int fila_tblPresupuesto = tblPresupuesto.getSelectedRow();
                        if (nivelesTable.seEncontroEstaPartida_enTitulo(idPartida, fila_tblPresupuesto)) {
                            //Si se repite mostramos un mensaje en el LABEL ya conocido
                            //                        JOptionPane.showMessageDialog(null, "*112");
                            habilitar_mensaje(true, "Ya existe esa partida en este Titulo, elija otra partida... id:E17");
                        } else {
                            //Si no se encuentra una partida repetida, entonces sin ingresa sin problemas
                            //                        JOptionPane.showMessageDialog(null, "*113");
                            if (nivelesTable.generarCodigo(false)) {
                                grabar_presupuesto(1);
                                actualiza_estado_presupuesto(1);
                                valida_controles_movimiento();
                            }
                        }
                        tblPartidasBase.requestFocus();
                    } else {
                        javax.swing.JOptionPane.showMessageDialog(this, "Seleccione una partida");
                    }
                } else {//Si no se ha seleccionado nada en la table de presupuesto mostrara el mensaje
                    JOptionPane.showMessageDialog(null, "Selecciona donde quiere que se inserte la partida");
                }
            } else if (accion == 2) {
                // enviar capitulo
                int fila_seleccion = tblCapituloBase.getSelectedRow();
                if (fila_seleccion != -1) {
                    String idTitulo = tblCapituloBase.getValueAt(fila_seleccion, 1).toString();
                    int fila_tblPresupuesto = tblPresupuesto.getSelectedRow();
                    if (nivelesTable.seEncontroEsteTitulo_enTitulo(idTitulo, fila_tblPresupuesto)) {
                        //Si se repite mostramos un mensaje en el LABEL ya conocido
//                        JOptionPane.showMessageDialog(null, "*115");
                        habilitar_mensaje(true, "Ya existe este titulo, elija otra titulo... id:E18");
                    } else {
                        //Si no se encuentra una Titulo repetido, entonces se ingresa sin problemas
//                        JOptionPane.showMessageDialog(null, "*116");
                        if (nivelesTable.generarCodigo(true)) {
                            grabar_presupuesto(1);
                            actualiza_estado_presupuesto(1);
                        }
                    }
                    tblCapituloBase.requestFocus();
                } else {
                    javax.swing.JOptionPane.showMessageDialog(this, "Ingrese algun nombre");
                }
            }
        } else {
            javax.swing.JOptionPane.showMessageDialog(this, "Seleccione al presupuesto del proyecto");
        }
    }

    public void reportes(int opcion, boolean esProyecto) {
        if (esProyecto == false) {
            int fila = tblpresu.getSelectedRow();
            if (fila != -1) {
                if (opcion == 1) {
                    metodos.reporte_estandar("sub_presupuesto.jasper", new String[]{codigo_proyecto, idpresupuesto}, "Reporte Sub Presupuesto", 1080, 650);
                } else if (opcion == 2) {
                    metodos.reporte_estandar("acu_sub.jasper", new String[]{codigo_proyecto, idpresupuesto}, "Reporte Análisis de costos unitarios", 1080, 650);
                } else if (opcion == 3) {
                    metodos.reporte_estandar("precios_sub.jasper", new String[]{codigo_proyecto, idpresupuesto}, "Reporte de Insumos del proyecto", 1080, 650);
                } else if (opcion == 4) {
                    metodos.reporte_estandar("desagregado_sub.jasper", new String[]{codigo_proyecto, idpresupuesto}, "Reporte de Desagregado", 1140, 650);
                } else if (opcion == 9) {
                    new dlgPresupuestoPartidaRango(new javax.swing.JFrame(), true, codigo_proyecto, idpresupuesto, 2).setVisible(true);
                }
            } else {
                JOptionPane.showMessageDialog(this, "Seleccione un Sub Presupuesto");
            }
        } else {
            if (opcion == 5) {
                metodos.reporte_estandar("presupuesto.jasper", new String[]{codigo_proyecto, idpresupuesto}, "Reporte de Presupuesto", 1080, 650);
            } else if (opcion == 6) {
                metodos.reporte_estandar("acu_ppto.jasper", new String[]{codigo_proyecto, idpresupuesto}, "Reporte Análisis de costos unitarios", 1080, 650);
            } else if (opcion == 7) {
                metodos.reporte_estandar("precios_ppto.jasper", new String[]{codigo_proyecto, idpresupuesto}, "Reporte de Insumos del proyecto", 1080, 650);
            } else if (opcion == 8) {
                metodos.reporte_estandar("desagregado_ppto.jasper", new String[]{codigo_proyecto, idpresupuesto}, "Reporte de Desagregado", 1140, 650);
            } else if (opcion == 10) {
                new dlgPresupuestoPartidaRango(new javax.swing.JFrame(), true, codigo_proyecto, idpresupuesto, 1).setVisible(true);
            }
        }
    }

    public void llenar_gastos_generales() {
        Object[][] datos = bd.select("proyecto", "total_proyecto, porcentaje_gg, monto_gg, porcentaje_uti, monto_uti, igv, utilidad_ver, igv_ver", " idproyecto='" + codigo_proyecto + "' ");
        if (datos != null) {
            //Obtenemos la cantidad alamacenada
            total_proyecto = Double.parseDouble(datos[0][0].toString());
            jTextField10.setText(metodos.redondeo_1(datos[0][0].toString()));
            txtPorcentaje_gg.setText(datos[0][1].toString());
            txt_monto_gg.setText(datos[0][2].toString());
            txtUtilidad.setText(datos[0][3].toString());
            jTextField12.setText(datos[0][4].toString());
            txtIgv.setText(datos[0][5].toString());
            ckeck_asigna(jCheckBox2, "1", datos[0][6].toString());
            ckeck_asigna(jCheckBox1, "1", datos[0][7].toString());

        } else {
            total_proyecto = 0;
            jTextField10.setText(metodos.redondeo_2("0"));
        }
    }

    public void ckeck_asigna(JCheckBox ckb, String deseado, String esperado) {
        if (esperado.equals(esperado)) {
            ckb.setSelected(true);
        } else {
            ckb.setSelected(false);
        }
    }

    public void operacion_capitulo(int accion) {
        if (accion == 1) {
            int fila = cboGrupo.getSelectedIndex();
            String codigo = "";
            if (fila > 0) {
                codigo = modelGrupoCombo.getElementAt(cboGrupo.getSelectedIndex()).toString();

            }
            new dlgCapituloEditar(null, true, accion, "", codigo).setVisible(true);
        } else if (accion == 2) {
            int fila = tblCapituloBase.getSelectedRow();
            if (fila != -1) {
                String codigo = tblCapituloBase.getValueAt(fila, 0).toString();
                new dlgCapituloEditar(null, true, accion, codigo, "").setVisible(true);
            } else {
                javax.swing.JOptionPane.showMessageDialog(this, "Seleccione el Título");
            }
        } else if (accion == 3) {
            int fila = tblCapituloBase.getSelectedRow();
            if (fila != -1) {
                if (javax.swing.JOptionPane.showConfirmDialog(null, "Está seguro que desea eliminar el Título seleccionado", "Mensaje", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == 0) {
                    String codigo = tblCapituloBase.getValueAt(fila, 0).toString();
                    dlgCapituloEditar dialog = new dlgCapituloEditar(new javax.swing.JFrame(), true, accion, codigo, "");
                    dialog.eliminar();
                }

            } else {
                javax.swing.JOptionPane.showMessageDialog(this, "Seleccione el Título");
            }
        } else if (accion == 4) {
            int fila = tblCapituloBase.getSelectedRow();
            if (fila != -1) {
                String codigo = tblCapituloBase.getValueAt(fila, 0).toString();
                new dlgCapituloEditar(null, true, accion, codigo, "").setVisible(true);
            } else {
                javax.swing.JOptionPane.showMessageDialog(this, "Seleccione el Título");
            }
        }
        cargarTable_CapitulosBase(txtBuscarCapitulos.getText());
    }

    public void cargar_partida_procedadas_arbol() {
        int v = jTree1.getLeadSelectionRow();
        if (v != -1) {
            TreePath currentSelection = jTree1.getSelectionPath();
            if (currentSelection != null) {
                String raiz_nivel = "", raiz2 = "", raiz_codigo = "";
                raiz_nivel = Integer.toString(jTree1.getLeadSelectionPath().getPathCount());// NIVEL
                raiz2 = jTree1.getLastSelectedPathComponent().toString();// NOMBRE
                DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode) (currentSelection.getLastPathComponent());
                raiz_codigo = arbol_id_buscar(getNodeIndex(jTree1, currentNode).trim());//codigo
                Object[][] cantidad = bd.select("partida_base", "count(idpartida)", "nombre like '%" + "" + "%' and idnivel like '" + raiz_codigo + "%'");
                String cant = "0";
                if (cantidad != null) {
                    cant = cantidad[0][0].toString();
                }
                //jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder("Partidas procesadas: " + cant + " de " + raiz2));
                cargarTable_PartidasBase("", raiz_codigo);
                txtBuscar1.setText("");
            }
        }
    }

    public String id_arbol() {
        String val = "";
        int v = jTree1.getLeadSelectionRow();
        if (v != -1) {
            TreePath currentSelection = jTree1.getSelectionPath();
            if (currentSelection != null) {
                String raiz_nivel = "", raiz2 = "", raiz_codigo = "";
                raiz_nivel = Integer.toString(jTree1.getLeadSelectionPath().getPathCount());// NIVEL
                raiz2 = jTree1.getLastSelectedPathComponent().toString();// NOMBRE
                DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode) (currentSelection.getLastPathComponent());
                raiz_codigo = arbol_id_buscar(getNodeIndex(jTree1, currentNode).trim());//codigo
                val = raiz_codigo;
            } else {
                val = "-1";
            }
        } else {
            val = "-1";
        }
        return val;
    }

    public String getNodeIndex(JTree tree, TreeNode node) {
        TreeNode root = (TreeNode) tree.getModel().getRoot();
        if (node == root) {
            return "";
        }
        TreeNode parent = node.getParent();
        if (parent == null) {
            return null;
        }
        String parentIndex = getNodeIndex(tree, parent);
        if (parentIndex == null) {
            return null;
        }
        return parentIndex + "." + parent.getIndex(node);
    }

    public String arbol_id_buscar(String valor) {
        String v = "";
        for (int i = 0; i < array_arbol.length; i++) {
            if (array_arbol[i][2] != null) {
//                System.out.println(array_arbol[i][2]);
                if (array_arbol[i][2].equals(valor)) {
                    v = array_arbol[i][0];
                    //break;
                }
            }
        }
        return v;
    }
    //___________________________________________________________________________________ Soy una barra separadora :)

    public final void obtener_cantidadNiveles_BD() {
        Object[][] datos = bd.select("parametros", "cantidad_niveles", null);
        if (datos != null) {
            //Obtenemos la cantidad alamacenada
            cantidad_niveles = Integer.parseInt(datos[0][0].toString());
        } else {
            //Si no se encuentra valores en la tabla, se opta por defecto en 3
            cantidad_niveles = 3;
        }
    }

    public void upRow() {
        int fila = tblpresu.getSelectedRow();
//        System.out.println("up getSelectedRow-fila_"+fila);
//        System.out.println("up getSelectedRowCount_"+(fila-1));
        if (fila - 1 >= 0) {
//            System.out.println("up");
            moverFilaJTable(fila, fila - 1);
        }
    }

    public void downRow() {
        int fila = tblpresu.getSelectedRow();
//        System.out.println("down getSelectedRow-fila_"+fila);
//        System.out.println("down getSelectedRowCount_"+(tblpresu.getRowCount()-1));
        if (fila + 1 <= tblpresu.getRowCount() - 1) {
//            System.out.println("down");
            moverFilaJTable(fila, fila + 1);
        }
    }

    public void editar_pie() {
        boolean v = true;
        if (jCheckBox3.isSelected()) {
            v = true;
        } else {
            v = false;
        }
        txtPorcentaje_gg.setEnabled(v);
        txtUtilidad.setEnabled(v);
        txtIgv.setEnabled(v);
        jCheckBox2.setEnabled(v);
        jCheckBox1.setEnabled(v);
    }

    public void moverFilaJTable(int filaActual, int finalDestino) {
        if (filaActual != -1 && tblpresu.getValueAt(filaActual, 3).toString().length() > 0) {
//            System.out.println("moverFilaJTable");
            String idActual_idproyecto = tblpresu.getValueAt(filaActual, 1).toString();
            String idActual_idpresupuesto = tblpresu.getValueAt(filaActual, 0).toString();
            String idFinal_idproyecto2 = tblpresu.getValueAt(finalDestino, 1).toString();
            String idFinal_idpresupuesto2 = tblpresu.getValueAt(finalDestino, 0).toString();
//            String id2=tblpresu.getValueAt(finalDestino, 0).toString();
            String ordenActual = (tblpresu.getValueAt(filaActual, 2).toString());
            String ordenFinal = (tblpresu.getValueAt(finalDestino, 2).toString());
//            System.out.println("ordenFinal:"+ordenFinal+"    ordenActual:"+ordenActual);
            if (ordenActual.length() < 2) {
                ordenActual = "0" + ordenActual;
            }
            if (ordenFinal.length() < 2) {
                ordenFinal = "0" + ordenFinal;
            }
            //UPDATE Realizamos la consulta
            bd.update("presupuesto",
                    "orden='" + ordenFinal + "' ",
                    "idproyecto='" + idActual_idproyecto + "' AND idpresupuesto='" + idActual_idpresupuesto + "' ");

            bd.update("presupuesto",
                    "orden='" + ordenActual + "' ",
                    "idproyecto='" + idFinal_idproyecto2 + "' AND idpresupuesto='" + idFinal_idpresupuesto2 + "' ");
            cargarTable_Presupuesto_base();
            tblpresu.setRowSelectionInterval(finalDestino, finalDestino);
        }
    }

    public void verificar_AumentarNivel() {
        int filaSelect = tblPresupuesto.getSelectedRow();
        DefaultTableModel modeloTabla = (DefaultTableModel) tblPresupuesto.getModel();
        if (filaSelect != -1) {
            String item = nivelesTable._extraerItemPresupuesto(filaSelect, nivelesTable.columnItem_EnTabla);
            int itemNivel = (item.length() + 1) / 3;//Para asegurarnos con el nivel...
            String item_tipo = modeloTabla.getValueAt(filaSelect, nivelesTable.columnItem_EnTabla + 8).toString();
            if (item_tipo.equals("1") && itemNivel == cantidad_niveles - 1) {
                habilitar_mensaje(true, "Solo se permiten " + (cantidad_niveles - 1) + " niveles para capítulos y " + (cantidad_niveles) + " niveles para partidas...  id:E11");
            } else {
                nivelesTable.aumentarNivel();
            }
        }
        tblPresupuesto.requestFocus();
    }

    public void bloquear_botones(boolean v) {
        btnUp.setEnabled(v);
        btnBajar.setEnabled(v);
        btnAumentarNivel.setEnabled(v);
        btnDisminuirNivel.setEnabled(v);
        btnEliminar.setEnabled(v);
        btnEnviarCapitulos.setEnabled(v);
        btnEnviarPartidas.setEnabled(v);
        btnEliminar1.setEnabled(v);
    }

    public void habilitar_mensaje(boolean activa, String mensaje) {
        if (hilo_activa == false) {
            if (activa) {
                metodos.sonidoBeep();
                lbl_icon_error.setVisible(true);
                jLabel2.setVisible(true);
                jLabel2.setText(mensaje);
                //jLabel2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/error.gif")));
                Thread t2 = new Thread(new Runnable() {
                    public void run() {
                        hilo_activa = true;
                        int a = 2;
                        lbl_icon_error.setVisible(true);
                        jLabel2.setVisible(true);
                        //jLabel2.setText(mensaje);
                        for (int i = 0; i < 11; i++) {
                            if (a == 2) {
                                lbl_icon_error.setVisible(true);
                                a = 1;
                            } else {
                                lbl_icon_error.setVisible(false);
                                a = 2;
                            }
                            try {
                                hilo.sleep(200);
                            } catch (InterruptedException ex) {
                                Logger.getLogger(dlg_presupuesto_prototipo.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }

                        lbl_icon_error.setVisible(false);
                        jLabel2.setText("");
                        jLabel2.setVisible(false);
                        hilo_activa = false;
                    }
                });
                t2.start();
            } else {
                lbl_icon_error.setVisible(false);
                jLabel2.setText("");
                jLabel2.setVisible(false);
            }
        }
    }

    public void procesando() {
        if (jCheckBox3.isSelected() == false) {
            //por cada sub prespuesto
            int fila = tblpresu.getSelectedRow();
            if (fila != -1) {
                String nombre = tblpresu.getValueAt(fila, 3).toString();
                dialog.jLabel6.setText(nombre);

                if (cal.verficacion_ceros(tblPresupuesto)) {
                    micro_proceso();
                } else {
                    dialog.dispose();
                    return;
                }
            }
            gastos_prespuesto_total(1, false);
            gastos_prespuesto_total(2, false);
            gastos_prespuesto_total(2, true);
        } else {
            //todos los sub presupuesto
            int n = tblpresu.getRowCount();
            for (int i = 0; i < n; i++) {
                int fila = i;
                System.out.println("entrando serghio" + (i + 1));
                tblpresu.changeSelection(fila, 1, false, false);
                if (tblpresu.getSelectedRow() != -1) {
                }
                System.out.println("entrando a1 " + (i + 1));
                idpresupuesto = tblpresu.getValueAt(fila, 0).toString();
                System.out.println("entrando a2 " + (i + 1));
                itemPresupuesto = tblpresu.getValueAt(fila, 2).toString();
                System.out.println("entrando a3 " + (i + 1));
                String nombre = tblpresu.getValueAt(fila, 3).toString();
                jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("Sub Presupuesto: " + nombre));
                dialog.jLabel6.setText(nombre);
                cargarTable_Presupuesto(1);
                System.out.println("verificando" + (i + 1));
                if (cal.verficacion_ceros(tblPresupuesto)) {
                    micro_proceso();
                    System.out.println("haber" + (i + 1));
                    actualiza_estado_presupuesto(2);
                } else {
                    jCheckBox3.setSelected(false);
                    bloquear_botones(true);
                    tblPresupuesto.setEnabled(true);
                    gastos_prespuesto_total(2, true);
                    //dialog.dispose();
                    return;
                }
            }

            ver_todo_presupuesto();
            gastos_prespuesto_total(1, true);
        }
        dialog.dispose();
    }

    public void micro_proceso() {
        //actualiza_datos_sub_prespuesto(idpresupuesto);
//        sumar_totales();
//        grabar_presupuesto(2);
        //1. actualizar los acus
        //2. procesar acus con metrado
        cal.grabar_presupuesto(codigo_proyecto, idpresupuesto, tblPresupuesto, dialog);
        //3. actualizar nombres y precios unitarios de las partidas
        actualiza_datos_sub_prespuesto(idpresupuesto);
        //4. hacer el culculo de la suma de encabezados parcial y (mat,mo,eyh, serv)
        //5. sumas totales
        sumar_totales_todos();
        //6. actualizar el ver sub prespuesto
        cargarTable_Presupuesto(1);

    }

    public void actualiza_datos_sub_prespuesto(String idpresu) {
        bd.transaccion_libre("UPDATE presupuesto_partida,partida_base SET "
                + "presupuesto_partida.precio_unitario=partida_base.precio, "
                + "presupuesto_partida.precio_parcial=partida_base.precio*presupuesto_partida.metrado,  "
                + "presupuesto_partida.nombre=partida_base.nombre  "
                + "WHERE presupuesto_partida.idpartida=partida_base.idpartida and presupuesto_partida.idpresupuesto='" + idpresu + "' ;");

    }

    public void ver_todo_presupuesto() {
        editar_pie();
        tblPresupuesto.editCellAt(-1, -1);
        if (jCheckBox3.isSelected()) {
            //tblpresu.setEnabled(false);
            tblPresupuesto.setEnabled(false);
            jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("Presupuesto"));
            cargarTable_Presupuesto(2);
            bloquear_botones(false);
            jLabel14.setVisible(true);
            gastos_prespuesto_total(1, true);
        } else {
//            tblpresu.setEnabled(true);
            tblPresupuesto.setEnabled(true);
            DefaultTableModel mdt = (DefaultTableModel) tblPresupuesto.getModel();
            metodos.tablaLimpia(mdt);
            bloquear_botones(true);
            //tblpresu.setGridColor(new java.awt.Color(128, 128, 128));
            jLabel14.setVisible(false);
            ver_presupuesto();
        }
    }

    public void sicroniza_gg(int opcion) {
        if (opcion == 1) {
            if (txtPorcentaje_gg.getText().trim().length() != 0) {
                gastos_prespuesto_total(1, false);
                double total = total_proyecto; //proyectod
                double porcentaje = Double.parseDouble(txtPorcentaje_gg.getText());
                double monto = (total * porcentaje) / 100;
                txt_monto_gg.setText(metodos.redondeo_1(monto));
                gastos_calcular();
            }
        } else {
            if (txt_monto_gg.getText().trim().length() != 0) {
                gastos_prespuesto_total(1, false);
                double total = total_proyecto; //proyectod
                double monto = Double.parseDouble(txt_monto_gg.getText());
                double porcentaje = (monto * 100) / total;
                txtPorcentaje_gg.setText(metodos.redondeo_1(porcentaje));
                gastos_calcular();
            }
        }
    }

    public void sicroniza_utilidad(int opcion) {
        if (opcion == 1) {
            if (txtUtilidad.getText().trim().length() != 0) {
                gastos_prespuesto_total(1, false);
                double total = total_proyecto; //proyectod
                double porcentaje = Double.parseDouble(txtUtilidad.getText());
                double monto = (total * porcentaje) / 100;
                jTextField12.setText(metodos.redondeo_1(monto));
                gastos_calcular();
            }
        } else {
            if (jTextField12.getText().trim().length() != 0) {
                gastos_prespuesto_total(1, false);
                double total = total_proyecto; //proyectod
                double monto = Double.parseDouble(jTextField12.getText());
                double porcentaje = (monto * 100) / total;
                txtUtilidad.setText(metodos.redondeo_1(porcentaje));
                gastos_calcular();
            }
        }
    }

    public void ver_grupo(int accion) {
        if (accion == 1) {
            new dlgCapituloGrupoEditar(null, true, accion, "").setVisible(true);
        } else if (accion == 2) {
            int fila = cboGrupo.getSelectedIndex();
            if (fila > 0) {
                String codigo = modelGrupoCombo.getElementAt(cboGrupo.getSelectedIndex()).toString();
                new dlgCapituloGrupoEditar(null, true, accion, codigo).setVisible(true);
            } else {
                javax.swing.JOptionPane.showMessageDialog(this, "Seleccione un Grupo");
            }
        }
        cboGrupo.setSelectedIndex(0);
        cargar_grupos_titulos();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        menuPresupuesto = new javax.swing.JPopupMenu();
        menu_ppto = new javax.swing.JMenu();
        Presupuesto = new javax.swing.JMenuItem();
        Acu = new javax.swing.JMenuItem();
        Precios = new javax.swing.JMenuItem();
        Desagregado = new javax.swing.JMenuItem();
        Rango = new javax.swing.JMenuItem();
        menu_sub = new javax.swing.JMenu();
        Sub_presupuesto = new javax.swing.JMenuItem();
        Acu1 = new javax.swing.JMenuItem();
        Precios1 = new javax.swing.JMenuItem();
        Desagregado1 = new javax.swing.JMenuItem();
        Rango1 = new javax.swing.JMenuItem();
        jPanel1 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tablaAcu = new javax.swing.JTable();
        jLabel16 = new javax.swing.JLabel();
        jLabel17 = new javax.swing.JLabel();
        jLabel18 = new javax.swing.JLabel();
        jLabel15 = new javax.swing.JLabel();
        btnEditarACU = new javax.swing.JButton();
        jPanel5 = new javax.swing.JPanel();
        jScrollPane4 = new javax.swing.JScrollPane();
        tblPresupuesto = new javax.swing.JTable();
        jPanel6 = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        txtPorcentaje_gg = new javax.swing.JTextField();
        txtUtilidad = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        txtIgv = new javax.swing.JTextField();
        jLabel8 = new javax.swing.JLabel();
        jTextField10 = new javax.swing.JTextField();
        txt_monto_gg = new javax.swing.JTextField();
        jTextField12 = new javax.swing.JTextField();
        jTextField13 = new javax.swing.JTextField();
        jTextField14 = new javax.swing.JTextField();
        jTextField15 = new javax.swing.JTextField();
        jCheckBox1 = new javax.swing.JCheckBox();
        jCheckBox2 = new javax.swing.JCheckBox();
        jLabel9 = new javax.swing.JLabel();
        jLabel11 = new javax.swing.JLabel();
        jLabel12 = new javax.swing.JLabel();
        jToolBar1 = new javax.swing.JToolBar();
        btnUp = new javax.swing.JButton();
        btnBajar = new javax.swing.JButton();
        jSeparator1 = new javax.swing.JToolBar.Separator();
        btnDisminuirNivel = new javax.swing.JButton();
        btnAumentarNivel = new javax.swing.JButton();
        jSeparator2 = new javax.swing.JToolBar.Separator();
        btnEliminar = new javax.swing.JButton();
        jSeparator8 = new javax.swing.JToolBar.Separator();
        jButton1 = new javax.swing.JButton();
        jSeparator7 = new javax.swing.JToolBar.Separator();
        btnVer = new javax.swing.JButton();
        jSeparator5 = new javax.swing.JToolBar.Separator();
        btnEliminar1 = new javax.swing.JButton();
        jSeparator6 = new javax.swing.JToolBar.Separator();
        btnVer1 = new javax.swing.JButton();
        lbl_icon_error = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jPanel2 = new javax.swing.JPanel();
        jTabbedPane1 = new javax.swing.JTabbedPane();
        pnlPrespuesto = new javax.swing.JPanel();
        jToolBar2 = new javax.swing.JToolBar();
        btnNuevoCategoria = new javax.swing.JButton();
        btnNuevoCategoria1 = new javax.swing.JButton();
        btnEliminarCategoria = new javax.swing.JButton();
        jSeparator3 = new javax.swing.JToolBar.Separator();
        btnSubirSubPresupuesto = new javax.swing.JButton();
        btnBajarSubPresupuesto = new javax.swing.JButton();
        jSeparator4 = new javax.swing.JToolBar.Separator();
        btnCopiar = new javax.swing.JButton();
        jScrollPane3 = new javax.swing.JScrollPane();
        tblpresu = new javax.swing.JTable();
        jCheckBox3 = new javax.swing.JCheckBox();
        jLabel14 = new javax.swing.JLabel();
        pnlCapitulo = new javax.swing.JPanel();
        jScrollPane5 = new javax.swing.JScrollPane();
        tblCapituloBase = new javax.swing.JTable();
        btnEnviarCapitulos = new javax.swing.JButton();
        jPanel3 = new javax.swing.JPanel();
        jToolBar4 = new javax.swing.JToolBar();
        btnCrear2 = new javax.swing.JButton();
        jButton6 = new javax.swing.JButton();
        cboGrupo = new javax.swing.JComboBox();
        jLabel19 = new javax.swing.JLabel();
        jLabel20 = new javax.swing.JLabel();
        jPanel7 = new javax.swing.JPanel();
        txtBuscarCapitulos = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jToolBar3 = new javax.swing.JToolBar();
        btnCrear1 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton5 = new javax.swing.JButton();
        PnlPartidas = new javax.swing.JPanel();
        txtBuscar1 = new javax.swing.JTextField();
        jLabel13 = new javax.swing.JLabel();
        jScrollPane2 = new javax.swing.JScrollPane();
        tblPartidasBase = new javax.swing.JTable();
        btnEnviarPartidas = new javax.swing.JButton();
        jScrollPane6 = new javax.swing.JScrollPane();
        jTree1 = new javax.swing.JTree();
        jLabel10 = new javax.swing.JLabel();

        menu_ppto.setText("Presupuesto");
        menu_ppto.setToolTipText("");

        Presupuesto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/vinieta.png"))); // NOI18N
        Presupuesto.setText("Presupuesto");
        Presupuesto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                PresupuestoActionPerformed(evt);
            }
        });
        menu_ppto.add(Presupuesto);

        Acu.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/vinieta.png"))); // NOI18N
        Acu.setText("Análisis de costos unitarios");
        Acu.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                AcuActionPerformed(evt);
            }
        });
        menu_ppto.add(Acu);

        Precios.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/vinieta.png"))); // NOI18N
        Precios.setText("Insumo");
        Precios.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                PreciosActionPerformed(evt);
            }
        });
        menu_ppto.add(Precios);

        Desagregado.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/vinieta.png"))); // NOI18N
        Desagregado.setText("Desagregado");
        Desagregado.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                DesagregadoActionPerformed(evt);
            }
        });
        menu_ppto.add(Desagregado);

        Rango.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/vinieta.png"))); // NOI18N
        Rango.setText("Acu x Rango");
        Rango.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                RangoActionPerformed(evt);
            }
        });
        menu_ppto.add(Rango);

        menuPresupuesto.add(menu_ppto);

        menu_sub.setText("Sub Presupuesto");

        Sub_presupuesto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/vinieta.png"))); // NOI18N
        Sub_presupuesto.setText("Sub Presupuesto");
        Sub_presupuesto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Sub_presupuestoActionPerformed(evt);
            }
        });
        menu_sub.add(Sub_presupuesto);

        Acu1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/vinieta.png"))); // NOI18N
        Acu1.setText("Análisis de costos unitarios");
        Acu1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Acu1ActionPerformed(evt);
            }
        });
        menu_sub.add(Acu1);

        Precios1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/vinieta.png"))); // NOI18N
        Precios1.setText("Insumo");
        Precios1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Precios1ActionPerformed(evt);
            }
        });
        menu_sub.add(Precios1);

        Desagregado1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/vinieta.png"))); // NOI18N
        Desagregado1.setText("Desagregado");
        Desagregado1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Desagregado1ActionPerformed(evt);
            }
        });
        menu_sub.add(Desagregado1);

        Rango1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/vinieta.png"))); // NOI18N
        Rango1.setText("Acu x Rango");
        Rango1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Rango1ActionPerformed(evt);
            }
        });
        menu_sub.add(Rango1);

        menuPresupuesto.add(menu_sub);

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Presupuesto");
        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

        jPanel1.setBackground(new java.awt.Color(225, 235, 247));
        jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("ACU"));
        jPanel4.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        tablaAcu.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Cod.", "", "Descripción", "Cuad", "Und", "Cant", "PU", "PP", "Quitar", "idtipo", "subcategoria", "cant_temp", "Puni_temp", "Ppar_temp"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false, false, false, false, false, false, true, true, true
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaAcu.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        tablaAcu.getTableHeader().setReorderingAllowed(false);
        tablaAcu.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tablaAcuMouseClicked(evt);
            }
        });
        tablaAcu.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                tablaAcuKeyReleased(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                tablaAcuKeyTyped(evt);
            }
        });
        jScrollPane1.setViewportView(tablaAcu);

        jPanel4.add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 42, 500, 180));

        jLabel16.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel16.setText("Rendimiento: ");
        jPanel4.add(jLabel16, new org.netbeans.lib.awtextra.AbsoluteConstraints(40, 20, -1, 18));

        jLabel17.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel17.setText("CU:");
        jPanel4.add(jLabel17, new org.netbeans.lib.awtextra.AbsoluteConstraints(220, 20, -1, 18));

        jLabel18.setText("Rendim/unid");
        jPanel4.add(jLabel18, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 20, 100, 18));

        jLabel15.setText("precio");
        jPanel4.add(jLabel15, new org.netbeans.lib.awtextra.AbsoluteConstraints(240, 20, 140, 18));

        btnEditarACU.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/editar_18.png"))); // NOI18N
        btnEditarACU.setText("Editar");
        btnEditarACU.setFocusable(false);
        btnEditarACU.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnEditarACU.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEditarACUActionPerformed(evt);
            }
        });
        jPanel4.add(btnEditarACU, new org.netbeans.lib.awtextra.AbsoluteConstraints(420, 18, 90, 25));

        jPanel1.add(jPanel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 380, 523, 230));

        jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("Sub Presupuesto"));
        jPanel5.setOpaque(false);
        jPanel5.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        tblPresupuesto.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "partida", "Item", "Descripción", "Und", "Metrado", "P. Unitario", "P. Parcial", "padre", "nivel", "tipo", "rendimiento", "id_unidad", "orden"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, true, false, false, false, false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tblPresupuesto.setRowHeight(23);
        tblPresupuesto.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        tblPresupuesto.getTableHeader().setReorderingAllowed(false);
        tblPresupuesto.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tblPresupuestoMouseClicked(evt);
            }
        });
        tblPresupuesto.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                tblPresupuestoFocusLost(evt);
            }
        });
        tblPresupuesto.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                tblPresupuestoKeyPressed(evt);
            }
            public void keyReleased(java.awt.event.KeyEvent evt) {
                tblPresupuestoKeyReleased(evt);
            }
        });
        jScrollPane4.setViewportView(tblPresupuesto);

        jPanel5.add(jScrollPane4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 58, 700, 445));

        jPanel6.setOpaque(false);
        jPanel6.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jLabel3.setText("Costo Directo:");
        jPanel6.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 0, -1, -1));

        jLabel4.setText("Gastos Generales:");
        jPanel6.add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 20, -1, -1));

        txtPorcentaje_gg.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        txtPorcentaje_gg.setText("0");
        txtPorcentaje_gg.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtPorcentaje_ggKeyTyped(evt);
            }
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txtPorcentaje_ggKeyReleased(evt);
            }
        });
        jPanel6.add(txtPorcentaje_gg, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 20, 50, 23));

        txtUtilidad.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        txtUtilidad.setText("30");
        txtUtilidad.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txtUtilidadKeyReleased(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtUtilidadKeyTyped(evt);
            }
        });
        jPanel6.add(txtUtilidad, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 40, 50, 23));

        jLabel5.setText("Utilidad:");
        jPanel6.add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 40, -1, -1));

        jLabel6.setText("Sub Total:");
        jPanel6.add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(390, 0, -1, -1));

        jLabel7.setText("IGV:");
        jPanel6.add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(390, 20, 30, -1));

        txtIgv.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        txtIgv.setText("18");
        txtIgv.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txtIgvKeyReleased(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtIgvKeyTyped(evt);
            }
        });
        jPanel6.add(txtIgv, new org.netbeans.lib.awtextra.AbsoluteConstraints(455, 20, 35, 23));

        jLabel8.setText("Total Ppto:");
        jPanel6.add(jLabel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(390, 40, 70, -1));

        jTextField10.setEditable(false);
        jTextField10.setBackground(new java.awt.Color(242, 242, 247));
        jTextField10.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jTextField10.setText("0");
        jTextField10.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jPanel6.add(jTextField10, new org.netbeans.lib.awtextra.AbsoluteConstraints(180, 0, 120, 23));

        txt_monto_gg.setEditable(false);
        txt_monto_gg.setBackground(new java.awt.Color(242, 242, 247));
        txt_monto_gg.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        txt_monto_gg.setText("0");
        txt_monto_gg.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txt_monto_ggKeyReleased(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txt_monto_ggKeyTyped(evt);
            }
        });
        jPanel6.add(txt_monto_gg, new org.netbeans.lib.awtextra.AbsoluteConstraints(180, 20, 120, 23));

        jTextField12.setEditable(false);
        jTextField12.setBackground(new java.awt.Color(242, 242, 247));
        jTextField12.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jTextField12.setText("0");
        jTextField12.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                jTextField12KeyReleased(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                jTextField12KeyTyped(evt);
            }
        });
        jPanel6.add(jTextField12, new org.netbeans.lib.awtextra.AbsoluteConstraints(180, 40, 120, 23));

        jTextField13.setEditable(false);
        jTextField13.setBackground(new java.awt.Color(242, 242, 247));
        jTextField13.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jTextField13.setText("0");
        jPanel6.add(jTextField13, new org.netbeans.lib.awtextra.AbsoluteConstraints(510, 0, 120, 23));

        jTextField14.setEditable(false);
        jTextField14.setBackground(new java.awt.Color(242, 242, 247));
        jTextField14.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jTextField14.setText("0");
        jPanel6.add(jTextField14, new org.netbeans.lib.awtextra.AbsoluteConstraints(510, 20, 120, 23));

        jTextField15.setEditable(false);
        jTextField15.setBackground(new java.awt.Color(242, 242, 247));
        jTextField15.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jTextField15.setText("0");
        jPanel6.add(jTextField15, new org.netbeans.lib.awtextra.AbsoluteConstraints(510, 40, 120, 23));

        jCheckBox1.setSelected(true);
        jCheckBox1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBox1ActionPerformed(evt);
            }
        });
        jPanel6.add(jCheckBox1, new org.netbeans.lib.awtextra.AbsoluteConstraints(414, 20, -1, -1));

        jCheckBox2.setSelected(true);
        jCheckBox2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBox2ActionPerformed(evt);
            }
        });
        jPanel6.add(jCheckBox2, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 40, -1, -1));

        jLabel9.setText("%");
        jPanel6.add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 40, 20, 23));

        jLabel11.setText("%");
        jPanel6.add(jLabel11, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 20, 20, 23));

        jLabel12.setText("%");
        jPanel6.add(jLabel12, new org.netbeans.lib.awtextra.AbsoluteConstraints(490, 20, 20, 23));

        jPanel5.add(jPanel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 525, 688, 70));

        jToolBar1.setFloatable(false);
        jToolBar1.setRollover(true);

        btnUp.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/subir-24.png"))); // NOI18N
        btnUp.setToolTipText("Subir al elemento seleccionado (Capitulo o Partida)");
        btnUp.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnUpActionPerformed(evt);
            }
        });
        jToolBar1.add(btnUp);

        btnBajar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/bajar-24.png"))); // NOI18N
        btnBajar.setToolTipText("Bajar al elemento seleccionado (Capitulo o Partida)");
        btnBajar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnBajarActionPerformed(evt);
            }
        });
        jToolBar1.add(btnBajar);
        jToolBar1.add(jSeparator1);

        btnDisminuirNivel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/izquierda3-24.png"))); // NOI18N
        btnDisminuirNivel.setToolTipText("Disminuir el nivel al capítulo seleccionado");
        btnDisminuirNivel.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnDisminuirNivelActionPerformed(evt);
            }
        });
        jToolBar1.add(btnDisminuirNivel);

        btnAumentarNivel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/derecha3-24.png"))); // NOI18N
        btnAumentarNivel.setToolTipText("Aumentar el nivel al capítulo seleccionado");
        btnAumentarNivel.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAumentarNivelActionPerformed(evt);
            }
        });
        jToolBar1.add(btnAumentarNivel);
        jToolBar1.add(jSeparator2);

        btnEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/eliminar.png"))); // NOI18N
        btnEliminar.setText("Eliminar");
        btnEliminar.setFocusable(false);
        btnEliminar.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEliminarActionPerformed(evt);
            }
        });
        jToolBar1.add(btnEliminar);
        jToolBar1.add(jSeparator8);

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/procesar.png"))); // NOI18N
        jButton1.setText("Procesar");
        jButton1.setFocusable(false);
        jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        jToolBar1.add(jButton1);
        jToolBar1.add(jSeparator7);

        btnVer.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/ver_reporte.png"))); // NOI18N
        btnVer.setText("Reporte Ppto");
        btnVer.setFocusable(false);
        btnVer.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnVer.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                btnVerMousePressed(evt);
            }
        });
        btnVer.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnVerActionPerformed(evt);
            }
        });
        jToolBar1.add(btnVer);
        jToolBar1.add(jSeparator5);

        btnEliminar1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/titulo_editar.png"))); // NOI18N
        btnEliminar1.setText("Cambiar Título");
        btnEliminar1.setFocusable(false);
        btnEliminar1.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnEliminar1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEliminar1ActionPerformed(evt);
            }
        });
        jToolBar1.add(btnEliminar1);
        jToolBar1.add(jSeparator6);

        btnVer1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/reportes_1.png"))); // NOI18N
        btnVer1.setText("Precio Insumos");
        btnVer1.setFocusable(false);
        btnVer1.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnVer1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                btnVer1MousePressed(evt);
            }
        });
        btnVer1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnVer1ActionPerformed(evt);
            }
        });
        jToolBar1.add(btnVer1);

        jPanel5.add(jToolBar1, new org.netbeans.lib.awtextra.AbsoluteConstraints(12, 20, 696, -1));

        lbl_icon_error.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
        lbl_icon_error.setForeground(new java.awt.Color(51, 51, 51));
        lbl_icon_error.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/error.gif"))); // NOI18N
        lbl_icon_error.setText("jLabel2");
        jPanel5.add(lbl_icon_error, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 507, 16, -1));

        jLabel2.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
        jLabel2.setForeground(new java.awt.Color(51, 51, 51));
        jLabel2.setText("jLabel2");
        jPanel5.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(29, 507, 620, -1));

        jPanel1.add(jPanel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(540, 10, 720, 600));

        jPanel2.setOpaque(false);

        jTabbedPane1.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
        jTabbedPane1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTabbedPane1MouseClicked(evt);
            }
        });
        jTabbedPane1.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jTabbedPane1StateChanged(evt);
            }
        });

        pnlPrespuesto.setOpaque(false);
        pnlPrespuesto.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jToolBar2.setFloatable(false);
        jToolBar2.setRollover(true);
        jToolBar2.setOpaque(false);

        btnNuevoCategoria.setForeground(new java.awt.Color(3, 90, 180));
        btnNuevoCategoria.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/agregar.png"))); // NOI18N
        btnNuevoCategoria.setText("Crear");
        btnNuevoCategoria.setFocusable(false);
        btnNuevoCategoria.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnNuevoCategoria.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNuevoCategoriaActionPerformed(evt);
            }
        });
        jToolBar2.add(btnNuevoCategoria);

        btnNuevoCategoria1.setForeground(new java.awt.Color(3, 90, 180));
        btnNuevoCategoria1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/editar.png"))); // NOI18N
        btnNuevoCategoria1.setText("Editar");
        btnNuevoCategoria1.setFocusable(false);
        btnNuevoCategoria1.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnNuevoCategoria1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNuevoCategoria1ActionPerformed(evt);
            }
        });
        jToolBar2.add(btnNuevoCategoria1);

        btnEliminarCategoria.setForeground(new java.awt.Color(3, 90, 180));
        btnEliminarCategoria.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/borrar.png"))); // NOI18N
        btnEliminarCategoria.setText("Eliminar");
        btnEliminarCategoria.setFocusable(false);
        btnEliminarCategoria.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnEliminarCategoria.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEliminarCategoriaActionPerformed(evt);
            }
        });
        jToolBar2.add(btnEliminarCategoria);
        jToolBar2.add(jSeparator3);

        btnSubirSubPresupuesto.setForeground(new java.awt.Color(3, 90, 180));
        btnSubirSubPresupuesto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/arriba.png"))); // NOI18N
        btnSubirSubPresupuesto.setFocusable(false);
        btnSubirSubPresupuesto.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnSubirSubPresupuesto.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnSubirSubPresupuesto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSubirSubPresupuestoActionPerformed(evt);
            }
        });
        jToolBar2.add(btnSubirSubPresupuesto);

        btnBajarSubPresupuesto.setForeground(new java.awt.Color(3, 90, 180));
        btnBajarSubPresupuesto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/abajo.png"))); // NOI18N
        btnBajarSubPresupuesto.setFocusable(false);
        btnBajarSubPresupuesto.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnBajarSubPresupuesto.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnBajarSubPresupuesto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnBajarSubPresupuestoActionPerformed(evt);
            }
        });
        jToolBar2.add(btnBajarSubPresupuesto);
        jToolBar2.add(jSeparator4);

        btnCopiar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/duplicar.png"))); // NOI18N
        btnCopiar.setText("Copiar Sub Ppto");
        btnCopiar.setFocusable(false);
        btnCopiar.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnCopiar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCopiarActionPerformed(evt);
            }
        });
        jToolBar2.add(btnCopiar);

        pnlPrespuesto.add(jToolBar2, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 500, -1));

        tblpresu.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null}
            },
            new String [] {
                "id", "idproyecto", "N°", "Sub Presupuesto", "Estado"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tblpresu.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        tblpresu.getTableHeader().setReorderingAllowed(false);
        tblpresu.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                tblpresuMouseReleased(evt);
            }
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tblpresuMouseClicked(evt);
            }
        });
        tblpresu.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                tblpresuKeyReleased(evt);
            }
            public void keyPressed(java.awt.event.KeyEvent evt) {
                tblpresuKeyPressed(evt);
            }
        });
        jScrollPane3.setViewportView(tblpresu);

        pnlPrespuesto.add(jScrollPane3, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 43, 500, 260));

        jCheckBox3.setText("Visualizar el Presupuesto Total");
        jCheckBox3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBox3ActionPerformed(evt);
            }
        });
        pnlPrespuesto.add(jCheckBox3, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 303, 230, -1));

        jLabel14.setForeground(new java.awt.Color(255, 102, 102));
        jLabel14.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        jLabel14.setText("No se puede editar");
        pnlPrespuesto.add(jLabel14, new org.netbeans.lib.awtextra.AbsoluteConstraints(351, 303, 150, -1));

        jTabbedPane1.addTab("Sub Pptos", null, pnlPrespuesto, "");

        pnlCapitulo.setOpaque(false);
        pnlCapitulo.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        tblCapituloBase.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, "Estructura"},
                {null, "Arquitectura"}
            },
            new String [] {
                "codigo", "Descripción"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tblCapituloBase.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        tblCapituloBase.getTableHeader().setReorderingAllowed(false);
        tblCapituloBase.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tblCapituloBaseMouseClicked(evt);
            }
        });
        tblCapituloBase.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                tblCapituloBaseKeyReleased(evt);
            }
            public void keyPressed(java.awt.event.KeyEvent evt) {
                tblCapituloBaseKeyPressed(evt);
            }
        });
        jScrollPane5.setViewportView(tblCapituloBase);

        pnlCapitulo.add(jScrollPane5, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 90, 500, 200));

        btnEnviarCapitulos.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/enviar_presupuesto.png"))); // NOI18N
        btnEnviarCapitulos.setText("Insertar");
        btnEnviarCapitulos.setToolTipText("Insertar el capítulo al presupuesto");
        btnEnviarCapitulos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEnviarCapitulosActionPerformed(evt);
            }
        });
        pnlCapitulo.add(btnEnviarCapitulos, new org.netbeans.lib.awtextra.AbsoluteConstraints(381, 290, 120, -1));

        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
        jPanel3.setDoubleBuffered(false);
        jPanel3.setOpaque(false);
        jPanel3.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jToolBar4.setFloatable(false);
        jToolBar4.setRollover(true);
        jToolBar4.setOpaque(false);

        btnCrear2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/agregar.png"))); // NOI18N
        btnCrear2.setText("Crear");
        btnCrear2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCrear2ActionPerformed(evt);
            }
        });
        jToolBar4.add(btnCrear2);

        jButton6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/editar.png"))); // NOI18N
        jButton6.setText("Editar");
        jButton6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton6ActionPerformed(evt);
            }
        });
        jToolBar4.add(jButton6);

        jPanel3.add(jToolBar4, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 3, 160, -1));

        cboGrupo.setBackground(new java.awt.Color(255, 255, 102));
        cboGrupo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        cboGrupo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cboGrupoActionPerformed(evt);
            }
        });
        jPanel3.add(cboGrupo, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 3, 260, -1));

        jLabel19.setText("Grupo:");
        jPanel3.add(jLabel19, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 3, 40, 25));

        jLabel20.setBackground(new java.awt.Color(255, 255, 153));
        jLabel20.setOpaque(true);
        jPanel3.add(jLabel20, new org.netbeans.lib.awtextra.AbsoluteConstraints(52, 7, 256, 24));

        pnlCapitulo.add(jPanel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 3, 500, 39));

        jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
        jPanel7.setOpaque(false);
        jPanel7.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        txtBuscarCapitulos.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                txtBuscarCapitulosFocusGained(evt);
            }
        });
        txtBuscarCapitulos.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txtBuscarCapitulosKeyReleased(evt);
            }
        });
        jPanel7.add(txtBuscarCapitulos, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 3, 130, -1));

        jLabel1.setText("Buscar:");
        jPanel7.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 3, -1, 25));

        jToolBar3.setFloatable(false);
        jToolBar3.setRollover(true);
        jToolBar3.setOpaque(false);

        btnCrear1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/agregar.png"))); // NOI18N
        btnCrear1.setText("Crear");
        btnCrear1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCrear1ActionPerformed(evt);
            }
        });
        jToolBar3.add(btnCrear1);

        jButton4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/editar.png"))); // NOI18N
        jButton4.setText("Editar");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });
        jToolBar3.add(jButton4);

        jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/eliminar.png"))); // NOI18N
        jButton3.setText("Eliminar");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });
        jToolBar3.add(jButton3);

        jButton5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/duplicar.png"))); // NOI18N
        jButton5.setText("Duplicar");
        jButton5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton5ActionPerformed(evt);
            }
        });
        jToolBar3.add(jButton5);

        jPanel7.add(jToolBar3, new org.netbeans.lib.awtextra.AbsoluteConstraints(192, 3, 300, -1));

        pnlCapitulo.add(jPanel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 45, 500, 39));

        jTabbedPane1.addTab("BD Títulos", pnlCapitulo);

        PnlPartidas.setOpaque(false);
        PnlPartidas.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        txtBuscar1.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txtBuscar1KeyReleased(evt);
            }
        });
        PnlPartidas.add(txtBuscar1, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 130, 270, -1));

        jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        jLabel13.setText("Buscar:");
        PnlPartidas.add(jLabel13, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 130, -1, 25));

        tblPartidasBase.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, "Concreto fc=210", "m3", null, null, null},
                {null, "tarajeo interior", "m2", null, null, null}
            },
            new String [] {
                "idpartida", "Descripción", "Und.", "rendimiento", "pu", "id. unid"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tblPartidasBase.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
        tblPartidasBase.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        tblPartidasBase.getTableHeader().setReorderingAllowed(false);
        tblPartidasBase.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tblPartidasBaseMouseClicked(evt);
            }
        });
        tblPartidasBase.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                tblPartidasBaseKeyReleased(evt);
            }
            public void keyPressed(java.awt.event.KeyEvent evt) {
                tblPartidasBaseKeyPressed(evt);
            }
        });
        jScrollPane2.setViewportView(tblPartidasBase);

        PnlPartidas.add(jScrollPane2, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 164, 503, 160));

        btnEnviarPartidas.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/peque/enviar_presupuesto.png"))); // NOI18N
        btnEnviarPartidas.setText("Insertar");
        btnEnviarPartidas.setToolTipText("Insertar la partida al presupuesto");
        btnEnviarPartidas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEnviarPartidasActionPerformed(evt);
            }
        });
        PnlPartidas.add(btnEnviarPartidas, new org.netbeans.lib.awtextra.AbsoluteConstraints(400, 130, -1, -1));

        javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("root");
        javax.swing.tree.DefaultMutableTreeNode treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Partidas");
        javax.swing.tree.DefaultMutableTreeNode treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("Basicos");
        treeNode2.add(treeNode3);
        treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("Construcción");
        treeNode2.add(treeNode3);
        treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("Saneamiento");
        javax.swing.tree.DefaultMutableTreeNode treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("captación");
        treeNode3.add(treeNode4);
        treeNode2.add(treeNode3);
        treeNode1.add(treeNode2);
        treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("sergio");
        treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("miguel");
        treeNode2.add(treeNode3);
        treeNode1.add(treeNode2);
        jTree1.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
        jTree1.setFocusable(false);
        jTree1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jTree1MousePressed(evt);
            }
        });
        jTree1.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
            public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
                jTree1ValueChanged(evt);
            }
        });
        jScrollPane6.setViewportView(jTree1);

        PnlPartidas.add(jScrollPane6, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 503, 120));

        jTabbedPane1.addTab("BD Partidas", PnlPartidas);

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 522, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 0, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addComponent(jTabbedPane1)
                .addContainerGap())
        );

        jPanel1.add(jPanel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, 520, 370));

        jLabel10.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/icon/principales/fondo_dialog.jpg"))); // NOI18N
        jPanel1.add(jLabel10, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 450, -1));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 1277, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void tblCapituloBaseMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblCapituloBaseMouseClicked
        if (evt.getClickCount() == 2) {
            int fila = tblCapituloBase.getSelectedRow();
            int columna = tblCapituloBase.getSelectedColumn();
            if (fila != -1 && (columna == 1)) {
                enviar_presupuesto(2);
            }
        }
    }//GEN-LAST:event_tblCapituloBaseMouseClicked

    private void btnEnviarCapitulosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEnviarCapitulosActionPerformed
        enviar_presupuesto(2);
    }//GEN-LAST:event_btnEnviarCapitulosActionPerformed

    private void btnEnviarPartidasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEnviarPartidasActionPerformed
        enviar_presupuesto(1);
    }//GEN-LAST:event_btnEnviarPartidasActionPerformed

    private void txtBuscar1KeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtBuscar1KeyReleased
        String val = id_arbol();
        if (val.equals("-1") == false) {
            cargarTable_PartidasBase(txtBuscar1.getText(), val);
        }

    }//GEN-LAST:event_txtBuscar1KeyReleased

    private void tblPartidasBaseKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tblPartidasBaseKeyReleased
        ver_acu(1);
        if (evt.getKeyCode() == KeyEvent.VK_CONTROL) {
            sePresiono_CTRL = false;
        }
    }//GEN-LAST:event_tblPartidasBaseKeyReleased

    private void tblPartidasBaseMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblPartidasBaseMouseClicked
        if (evt.getClickCount() == 2) {
            int fila = tblPartidasBase.getSelectedRow();
            int columna = tblPartidasBase.getSelectedColumn();
            if (fila != -1 && (columna == 1)) {
                enviar_presupuesto(1);
            }
        }
        ver_acu(1);        // TODO add your handling code here:
    }//GEN-LAST:event_tblPartidasBaseMouseClicked

    private void tblPresupuestoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblPresupuestoMouseClicked
        valida_controles_movimiento();
        if (evt.getClickCount() == 2) {
            int fila = tblPresupuesto.getSelectedRow();
            if (fila != -1) {
                String valor = tblPresupuesto.getValueAt(fila, 9).toString();
                if (valor.equals("0")) {
                    dlgPartidas dialog = new dlgPartidas(new javax.swing.JFrame(), true, tblPresupuesto.getValueAt(tblPresupuesto.getSelectedRow(), 0).toString());
                    dialog.setVisible(true);
                    ver_presupuesto();
                    tblPresupuesto.changeSelection(fila, 1, false, false);
                }
            }
        }
        ver_acu(2);
    }//GEN-LAST:event_tblPresupuestoMouseClicked

    private void tblpresuMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblpresuMouseClicked
//        ver_presupuesto();
    }//GEN-LAST:event_tblpresuMouseClicked

    private void tblCapituloBaseKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tblCapituloBaseKeyReleased
        if (evt.getKeyCode() == KeyEvent.VK_CONTROL) {
            sePresiono_CTRL = false;
        }
    }//GEN-LAST:event_tblCapituloBaseKeyReleased

    private void btnVerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnVerActionPerformed
    }//GEN-LAST:event_btnVerActionPerformed

    private void btnAumentarNivelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAumentarNivelActionPerformed
        int fila = tblPresupuesto.getSelectedRow();//Obtenemos la fila seleccionada
        if (fila != -1) {
            if (tblPresupuesto.getValueAt(fila, 9).toString().equals("1")) {
                verificar_AumentarNivel();
                actualiza_estado_presupuesto(1);
            } else {
                JOptionPane.showMessageDialog(null, "Seleccione un Título");
            }
        } else {
            JOptionPane.showMessageDialog(null, "Seleccione un Título");
        }

    }//GEN-LAST:event_btnAumentarNivelActionPerformed

    private void btnDisminuirNivelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDisminuirNivelActionPerformed
        int fila = tblPresupuesto.getSelectedRow();//Obtenemos la fila seleccionada
        if (fila != -1) {
            if (tblPresupuesto.getValueAt(fila, 9).toString().equals("1")) {
                nivelesTable.disminuirNivel();
                tblPresupuesto.requestFocus();
                actualiza_estado_presupuesto(1);
            } else {
                JOptionPane.showMessageDialog(null, "Seleccione un Título");
            }
        } else {
            JOptionPane.showMessageDialog(null, "Seleccione un Título");
        }
    }//GEN-LAST:event_btnDisminuirNivelActionPerformed

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        boolean v = true;
        if (jCheckBox3.isSelected()) {
            v = true;
        } else {
            if (tblpresu.getSelectedRow() != -1) {
                v = true;
            } else {
                javax.swing.JOptionPane.showMessageDialog(null, "Seleccione al presupuesto del proyecto");
                v = false;
            }
        }
        if (v) {
            Thread t1 = new Thread(new Runnable() {
                public void run() {
                    dialog.setVisible(true);
                    dialog.jLabel1.setText("");
                    dialog.jLabel6.setText("");
                    dialog.jProgressBar1.setValue(0);
                }
            });
            Thread t2 = new Thread(new Runnable() {
                public void run() {
                    try {
                        tblPresupuesto.editCellAt(-1, -1);
                        procesando();
                    } catch (Throwable t) {
                        t.printStackTrace();
                        //catch (Throwable t) {
                    }
                }
            });

            t1.start();
            t2.start();
        }
    }//GEN-LAST:event_jButton1ActionPerformed

    private void jTabbedPane1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTabbedPane1MouseClicked
    }//GEN-LAST:event_jTabbedPane1MouseClicked

    private void btnCrear1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCrear1ActionPerformed
        operacion_capitulo(1);
    }//GEN-LAST:event_btnCrear1ActionPerformed

    private void btnNuevoCategoriaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNuevoCategoriaActionPerformed
        presupuesto_dlg(1);
    }//GEN-LAST:event_btnNuevoCategoriaActionPerformed

    private void btnNuevoCategoria1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNuevoCategoria1ActionPerformed
        presupuesto_dlg(2);
    }//GEN-LAST:event_btnNuevoCategoria1ActionPerformed

    private void btnEliminarCategoriaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminarCategoriaActionPerformed
        presupuesto_dlg(3);
    }//GEN-LAST:event_btnEliminarCategoriaActionPerformed

    private void tablaAcuMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tablaAcuMouseClicked
    }//GEN-LAST:event_tablaAcuMouseClicked

    private void tablaAcuKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tablaAcuKeyTyped
        if (tablaAcu.getSelectedRows().length > 0) {
        }
    }//GEN-LAST:event_tablaAcuKeyTyped

    private void tablaAcuKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tablaAcuKeyReleased
    }//GEN-LAST:event_tablaAcuKeyReleased

    private void btnEditarACUActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEditarACUActionPerformed

        if (id_partida_editar.trim().length() != 0 && jLabel18.getText().trim().length() != 0) {
            dlgPartidas dialog = new dlgPartidas(new javax.swing.JFrame(), true, id_partida_editar);
            dialog.setVisible(true);
            arbol_llenado();
            cargar_partida_procedadas_arbol();
            ver_presupuesto();
        } else {
            javax.swing.JOptionPane.showMessageDialog(this, "Seleccione una partida");
        }


    }//GEN-LAST:event_btnEditarACUActionPerformed

    private void jTabbedPane1StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jTabbedPane1StateChanged
        int seleccion = jTabbedPane1.getSelectedIndex();
        //System.out.println(seleccion);
        if (seleccion == 0) {
            tblpresu.requestFocus();
        } else if (seleccion == 1) {
            tblCapituloBase.requestFocus();
        } else if (seleccion == 2) {
            tblPartidasBase.requestFocus();
        }
    }//GEN-LAST:event_jTabbedPane1StateChanged

    private void btnUpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnUpActionPerformed
        nivelesTable.moverUp();
        tblPresupuesto.requestFocus();
        actualiza_estado_presupuesto(1);
    }//GEN-LAST:event_btnUpActionPerformed

    private void btnVerMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnVerMousePressed
        menuPresupuesto.show(evt.getComponent(), 0, 30);
    }//GEN-LAST:event_btnVerMousePressed

    private void AcuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AcuActionPerformed
        reportes(6, true);
    }//GEN-LAST:event_AcuActionPerformed

    private void PresupuestoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PresupuestoActionPerformed
        reportes(5, true);
    }//GEN-LAST:event_PresupuestoActionPerformed

    private void jTree1MousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTree1MousePressed
        cargar_partida_procedadas_arbol();
    }//GEN-LAST:event_jTree1MousePressed

    private void jTree1ValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_jTree1ValueChanged
        // TreePath path = evt.getPath();
    }//GEN-LAST:event_jTree1ValueChanged

    private void tblPresupuestoKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tblPresupuestoKeyReleased
        ver_acu(2);
//        if(evt.getKeyCode()==KeyEvent.VK_CONTROL){
//             sePresiono_CTRL=true;
//         }else{
//             if(sePresiono_CTRL){
//                 if (evt.getKeyCode()==KeyEvent.VK_UP) {
//                     nivelesTable.moverUp();
////                     btnUpActionPerformed(null);
////                     JOptionPane.showMessageDialog(null, "moverUp");
//                     tblPresupuesto.requestFocus();
//                 } else if (evt.getKeyCode()==KeyEvent.VK_DOWN){
//                     nivelesTable.moverDown();
////                     btnBajarActionPerformed(null);
////                     JOptionPane.showMessageDialog(null, "down");
//                     tblPresupuesto.requestFocus();
//                 } else if (evt.getKeyCode()==KeyEvent.VK_RIGHT) {
//                     verificar_AumentarNivel();
//                 } else if (evt.getKeyCode()==KeyEvent.VK_LEFT){
//                     nivelesTable.disminuirNivel();
//                     tblPresupuesto.requestFocus();
//                 }
//                 sePresiono_CTRL=false;
//             }
//         }
    }//GEN-LAST:event_tblPresupuestoKeyReleased

    private void PreciosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PreciosActionPerformed
        reportes(7, true);
    }//GEN-LAST:event_PreciosActionPerformed

    private void DesagregadoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_DesagregadoActionPerformed
        reportes(8, true);
    }//GEN-LAST:event_DesagregadoActionPerformed

    private void tblpresuKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tblpresuKeyReleased
        ver_presupuesto();
        if (evt.getKeyCode() == KeyEvent.VK_CONTROL) {
            sePresiono_CTRL = false;
        }
    }//GEN-LAST:event_tblpresuKeyReleased

    private void txtBuscarCapitulosFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtBuscarCapitulosFocusGained
    }//GEN-LAST:event_txtBuscarCapitulosFocusGained

    private void tblPresupuestoFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_tblPresupuestoFocusLost
//        tblPresupuesto.editCellAt(-1, -1);
//        JOptionPane.showMessageDialog(this,"holass");
    }//GEN-LAST:event_tblPresupuestoFocusLost

    private void btnBajarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBajarActionPerformed
        nivelesTable.moverDown();
        tblPresupuesto.requestFocus();
        actualiza_estado_presupuesto(1);
    }//GEN-LAST:event_btnBajarActionPerformed

    private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminarActionPerformed
        int fila = tblPresupuesto.getSelectedRow();//Obtenemos la fila seleccionada
        if (fila != -1) {
            String v = "";
            if (tblPresupuesto.getValueAt(fila, 9).toString().equals("0")) {
                v = "la Partida";
            } else {
                v = "el Título";
            }
            if (JOptionPane.showConfirmDialog(null, "Esta seguro de eliminar " + v, "Mensaje", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == 0) {
                nivelesTable.quitarNivel();
                actualiza_estado_presupuesto(1);
            }
        } else {
            JOptionPane.showMessageDialog(null, "Seleccione la partida o título");
        }

    }//GEN-LAST:event_btnEliminarActionPerformed

    private void btnEliminarCategoria2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminarCategoria2ActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_btnEliminarCategoria2ActionPerformed

    private void txt_monto_ggKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txt_monto_ggKeyTyped
        controlEvent.soloNumerosDecimales(evt, txt_monto_gg, 2);
    }//GEN-LAST:event_txt_monto_ggKeyTyped

    private void txtUtilidadKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtUtilidadKeyTyped
        controlEvent.soloNumerosDecimales(evt, txtUtilidad, 2);
    }//GEN-LAST:event_txtUtilidadKeyTyped

    private void txtIgvKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtIgvKeyTyped
        controlEvent.soloNumerosDecimales(evt, txtIgv, 2);
    }//GEN-LAST:event_txtIgvKeyTyped

    private void txt_monto_ggKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txt_monto_ggKeyReleased
        gastos_calcular();
        //sicroniza_gg(2);
    }//GEN-LAST:event_txt_monto_ggKeyReleased

    private void txtUtilidadKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtUtilidadKeyReleased
        gastos_calcular();
        //sicroniza_utilidad(1);
    }//GEN-LAST:event_txtUtilidadKeyReleased

    private void txtIgvKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtIgvKeyReleased
        gastos_calcular();
    }//GEN-LAST:event_txtIgvKeyReleased

    private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox2ActionPerformed
        gastos_calcular();
    }//GEN-LAST:event_jCheckBox2ActionPerformed

    private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox1ActionPerformed
        gastos_calcular();
    }//GEN-LAST:event_jCheckBox1ActionPerformed

    private void Sub_presupuestoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Sub_presupuestoActionPerformed
        reportes(1, false);
    }//GEN-LAST:event_Sub_presupuestoActionPerformed

    private void tblpresuKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tblpresuKeyPressed
//         int fila_select=tblpresu.getSelectedRow();
//        if(evt.getKeyCode()==KeyEvent.VK_CONTROL){
//             sePresiono_CTRL=true;
//         }else{
//             if(sePresiono_CTRL){
//                 if (evt.getKeyCode()==KeyEvent.VK_UP) {
//                     upRow();
//                     tblpresu.changeSelection(fila_select, 1, false, false);
//                     sePresiono_CTRL=false;
//                 } else if (evt.getKeyCode()==KeyEvent.VK_DOWN){
//                     downRow();
//                     tblpresu.changeSelection(fila_select, 1, false, false);
//                     sePresiono_CTRL=false;
//                 } else {
//                     sePresiono_CTRL=false;
//                 }
////                 KeyEvent.
//             }
//         }
    }//GEN-LAST:event_tblpresuKeyPressed

    private void tblCapituloBaseKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tblCapituloBaseKeyPressed
        if (evt.getKeyCode() == KeyEvent.VK_CONTROL) {
            sePresiono_CTRL = true;
        } else {
            if (sePresiono_CTRL && evt.getKeyCode() == KeyEvent.VK_RIGHT) {
                enviar_presupuesto(2);
                sePresiono_CTRL = false;
            }
        }
        if (evt.getKeyCode() == KeyEvent.VK_TAB) {
            tblPresupuesto.requestFocus();
        }
    }//GEN-LAST:event_tblCapituloBaseKeyPressed

    private void tblPartidasBaseKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tblPartidasBaseKeyPressed
        if (evt.getKeyCode() == KeyEvent.VK_CONTROL) {
            sePresiono_CTRL = true;
        } else {
            if (sePresiono_CTRL && evt.getKeyCode() == KeyEvent.VK_RIGHT) {
                enviar_presupuesto(1);
                sePresiono_CTRL = false;
            }
        }
        if (evt.getKeyCode() == KeyEvent.VK_TAB) {
            tblPresupuesto.requestFocus();
        }
    }//GEN-LAST:event_tblPartidasBaseKeyPressed

    private void tblPresupuestoKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tblPresupuestoKeyPressed
    }//GEN-LAST:event_tblPresupuestoKeyPressed

    private void btnBajarSubPresupuestoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBajarSubPresupuestoActionPerformed
        downRow();
    }//GEN-LAST:event_btnBajarSubPresupuestoActionPerformed

    private void btnSubirSubPresupuestoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSubirSubPresupuestoActionPerformed
        upRow();
    }//GEN-LAST:event_btnSubirSubPresupuestoActionPerformed

    private void tblpresuMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblpresuMouseReleased
        ver_presupuesto();
    }//GEN-LAST:event_tblpresuMouseReleased

    private void btnCopiarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCopiarActionPerformed
        dlgPrespuestocopiar dialog = new dlgPrespuestocopiar(new javax.swing.JFrame(), true, codigo_proyecto);
        dialog.setVisible(true);
        cargarTable_Presupuesto_base();
    }//GEN-LAST:event_btnCopiarActionPerformed

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
        operacion_capitulo(2);
    }//GEN-LAST:event_jButton4ActionPerformed

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
        operacion_capitulo(3);
    }//GEN-LAST:event_jButton3ActionPerformed

    private void RangoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_RangoActionPerformed
        reportes(10, true);

    }//GEN-LAST:event_RangoActionPerformed

    private void jCheckBox3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox3ActionPerformed
        ver_todo_presupuesto();
    }//GEN-LAST:event_jCheckBox3ActionPerformed

    private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed
        operacion_capitulo(4);
    }//GEN-LAST:event_jButton5ActionPerformed

    private void btnVer1MousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnVer1MousePressed
    }//GEN-LAST:event_btnVer1MousePressed

    private void btnVer1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnVer1ActionPerformed
        boolean v = true;
        int opcion = 1;
        String nombre_sub = "";
        String cod_sub = "";
        if (jCheckBox3.isSelected()) {
            v = true;
            opcion = 1;
        } else {
            int fila = tblpresu.getSelectedRow();
            if (fila != -1) {
                if (metodos.verificar_procesados(codigo_proyecto) == false) {
                    v = true;
                    opcion = 2;
                    nombre_sub = tblpresu.getValueAt(fila, 3).toString();
                    cod_sub = tblpresu.getValueAt(fila, 0).toString();
                } else {
                    v = false;
                }

            } else {
                javax.swing.JOptionPane.showMessageDialog(null, "Seleccione al presupuesto del proyecto");
                v = false;
            }
        }
        if (v) {
            dlgPresupuestoPrecio dialog = new dlgPresupuestoPrecio(new javax.swing.JFrame(), true, codigo_proyecto, opcion, cod_sub, nombre_sub);
            dialog.setVisible(true);
        }

    }//GEN-LAST:event_btnVer1ActionPerformed

    private void Acu1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Acu1ActionPerformed
        reportes(2, false);
    }//GEN-LAST:event_Acu1ActionPerformed

    private void Precios1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Precios1ActionPerformed
        reportes(3, false);
    }//GEN-LAST:event_Precios1ActionPerformed

    private void Desagregado1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Desagregado1ActionPerformed
        reportes(4, false);
    }//GEN-LAST:event_Desagregado1ActionPerformed

    private void Rango1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Rango1ActionPerformed
        reportes(9, false);
    }//GEN-LAST:event_Rango1ActionPerformed

    private void cboGrupoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cboGrupoActionPerformed
        if (a1 == 2) {
            if (cboGrupo.getSelectedIndex() != -1) {
                cargarTable_CapitulosBase(txtBuscarCapitulos.getText());
            }
        }
    }//GEN-LAST:event_cboGrupoActionPerformed

    private void btnEliminar1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminar1ActionPerformed
        int fila = tblPresupuesto.getSelectedRow();//Obtenemos la fila seleccionada
        if (fila != -1) {
            if (tblPresupuesto.getValueAt(fila, 9).toString().equals("1")) {
                dlgCambiarTitulo dialog = new dlgCambiarTitulo(new javax.swing.JFrame(), true);
                dialog.setVisible(true);
                String nombre = dialog.seleccion;
                if (nombre.equals("") == false) {
                    tblPresupuesto.setValueAt(dialog.seleccion, fila, 2);
                    bd.update("presupuesto_partida", " nombre='" + nombre + "'", "idproyecto='" + codigo_proyecto + "'  and idpresupuesto='" + idpresupuesto + "' and orden='" + tblPresupuesto.getValueAt(fila, 12).toString() + "' ");
                    actualiza_estado_presupuesto(1);
                }

            } else {
                JOptionPane.showMessageDialog(null, "Seleccione un Título");
            }
        } else {
            JOptionPane.showMessageDialog(null, "Seleccione un Título");
        }

    }//GEN-LAST:event_btnEliminar1ActionPerformed

    private void txtBuscarCapitulosKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtBuscarCapitulosKeyReleased
        cargarTable_CapitulosBase(txtBuscarCapitulos.getText());
    }//GEN-LAST:event_txtBuscarCapitulosKeyReleased

    private void txtPorcentaje_ggKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtPorcentaje_ggKeyReleased
        gastos_calcular();
        //sicroniza_gg(1);
    }//GEN-LAST:event_txtPorcentaje_ggKeyReleased

    private void jTextField12KeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField12KeyReleased
//        sicroniza_utilidad(1);
    }//GEN-LAST:event_jTextField12KeyReleased

    private void txtPorcentaje_ggKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtPorcentaje_ggKeyTyped
//        controlEvent.soloNumerosDecimales(evt, jTextField5, 2);
    }//GEN-LAST:event_txtPorcentaje_ggKeyTyped

    private void jTextField12KeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField12KeyTyped
        //      controlEvent.soloNumerosDecimales(evt, jTextField12, 2);
    }//GEN-LAST:event_jTextField12KeyTyped

    private void btnCrear2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCrear2ActionPerformed
        ver_grupo(1);
    }//GEN-LAST:event_btnCrear2ActionPerformed

    private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed
        ver_grupo(2);
    }//GEN-LAST:event_jButton6ActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /*
         * Set the Nimbus look and feel
         */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(dlg_presupuesto_prototipo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(dlg_presupuesto_prototipo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(dlg_presupuesto_prototipo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(dlg_presupuesto_prototipo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
         * Create and display the dialog
         */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                dlg_presupuesto_prototipo dialog = new dlg_presupuesto_prototipo(new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    @Override
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenuItem Acu;
    private javax.swing.JMenuItem Acu1;
    private javax.swing.JMenuItem Desagregado;
    private javax.swing.JMenuItem Desagregado1;
    private javax.swing.JPanel PnlPartidas;
    private javax.swing.JMenuItem Precios;
    private javax.swing.JMenuItem Precios1;
    private javax.swing.JMenuItem Presupuesto;
    private javax.swing.JMenuItem Rango;
    private javax.swing.JMenuItem Rango1;
    private javax.swing.JMenuItem Sub_presupuesto;
    private javax.swing.JButton btnAumentarNivel;
    private javax.swing.JButton btnBajar;
    private javax.swing.JButton btnBajarSubPresupuesto;
    private javax.swing.JButton btnCopiar;
    private javax.swing.JButton btnCrear1;
    private javax.swing.JButton btnCrear2;
    private javax.swing.JButton btnDisminuirNivel;
    private javax.swing.JButton btnEditarACU;
    private javax.swing.JButton btnEliminar;
    private javax.swing.JButton btnEliminar1;
    private javax.swing.JButton btnEliminarCategoria;
    private javax.swing.JButton btnEnviarCapitulos;
    private javax.swing.JButton btnEnviarPartidas;
    private javax.swing.JButton btnNuevoCategoria;
    private javax.swing.JButton btnNuevoCategoria1;
    private javax.swing.JButton btnSubirSubPresupuesto;
    private javax.swing.JButton btnUp;
    private javax.swing.JButton btnVer;
    private javax.swing.JButton btnVer1;
    private javax.swing.JComboBox cboGrupo;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JButton jButton6;
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JCheckBox jCheckBox2;
    private javax.swing.JCheckBox jCheckBox3;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel19;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    public javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JScrollPane jScrollPane6;
    private javax.swing.JToolBar.Separator jSeparator1;
    private javax.swing.JToolBar.Separator jSeparator2;
    private javax.swing.JToolBar.Separator jSeparator3;
    private javax.swing.JToolBar.Separator jSeparator4;
    private javax.swing.JToolBar.Separator jSeparator5;
    private javax.swing.JToolBar.Separator jSeparator6;
    private javax.swing.JToolBar.Separator jSeparator7;
    private javax.swing.JToolBar.Separator jSeparator8;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTextField jTextField10;
    private javax.swing.JTextField jTextField12;
    private javax.swing.JTextField jTextField13;
    private javax.swing.JTextField jTextField14;
    private javax.swing.JTextField jTextField15;
    private javax.swing.JToolBar jToolBar1;
    private javax.swing.JToolBar jToolBar2;
    private javax.swing.JToolBar jToolBar3;
    private javax.swing.JToolBar jToolBar4;
    private javax.swing.JTree jTree1;
    private javax.swing.JLabel lbl_icon_error;
    private javax.swing.JPopupMenu menuPresupuesto;
    private javax.swing.JMenu menu_ppto;
    private javax.swing.JMenu menu_sub;
    private javax.swing.JPanel pnlCapitulo;
    private javax.swing.JPanel pnlPrespuesto;
    private javax.swing.JTable tablaAcu;
    private javax.swing.JTable tblCapituloBase;
    private javax.swing.JTable tblPartidasBase;
    private javax.swing.JTable tblPresupuesto;
    private javax.swing.JTable tblpresu;
    private javax.swing.JTextField txtBuscar1;
    private javax.swing.JTextField txtBuscarCapitulos;
    private javax.swing.JTextField txtIgv;
    private javax.swing.JTextField txtPorcentaje_gg;
    private javax.swing.JTextField txtUtilidad;
    private javax.swing.JTextField txt_monto_gg;
    // End of variables declaration//GEN-END:variables
}
